在我的主页的Selenium测试中,我遇到了以下问题:
我的页面上有很多按钮。单击其中一个选项时,选择列表将通过javascript函数填充多个选项。单击其中一个按钮后,选择列表可以如下所示:
<select id="selectionList" name="List1" size="10" style="width:100%;">
<option style="color:#0275d8">Item Type 1</option>
<option onclick="onSelection()" id="Item_1">Item 1</option>
<option onclick="onSelection()" id="Item_2">Item 2</option>
<option onclick="onSelection()" id="Item_3">Item 3</option>
<option onclick="onSelection()" id="Item_4">Item 4</option>
<option onclick="onSelection()" id="Item_5">Item 5</option>
<option onclick="onSelection()" id="Item_6">Item 6</option>
<option style="color:#0275d8">Item Type 2</option>
<option onclick="onSelection()" id="Item_7">Item 7</option>
<option onclick="onSelection()" id="Item_8">Item 8</option>
<option onclick="onSelection()" id="Item_9">Item 9</option>
<option onclick="onSelection()" id="Item_10">Item 10</option>
</select>在我的测试中,我使用以下方法单击其中一项。
WebDriverWait(self.browser, 60).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='Item_1']"))).click()我确实看到项目1被高亮显示,但是onSelection()函数没有被调用。
我也试过这个
time.sleep(10)
self.browser.find_element_by_id("Item_1").click()同样,项目1被高亮显示,但函数onSelection()没有被调用。
知道如何解决这个问题吗?
发布于 2021-02-07 18:54:36
这似乎是一个已知的问题
https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2556
该问题被标记为已关闭,但似乎只是因为最初的记者放弃了该问题和/或因为它是从旧的问题跟踪器中报告的一个导入错误。
据报道,在讨论中有一个变通办法。
driver.action.click_and_hold(element).perform
sleep(1)
driver.action.release.perform我认为代码是非正式的,因为AFAIK没有driver.action。相反,您必须执行actions = ActionChains(driver)。
有关更多信息,请参见此处:https://www.tutorialspoint.com/what-are-actionchains-class-in-selenium-with-python
发布于 2021-02-07 18:48:29
该元素是一个html-选择元素,因此您需要使用Select()类。
要使用<option>选择文本作为条目1,使用硒,您需要为element_to_be_clickable()导出WebDriverWait,您可以使用下面的定位器策略之一
CSS_SELECTOR:
select =select( 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,,WebDriverWait(self.browser,“select#selectionListname=‘List1’”))select.select_by_visible_text(项目1)XPATH:
select =select( 20).until(EC.element_to_be_clickable((By.XPATH,,WebDriverWait(self.browser,self.browser "//select@id='selectionList‘和@name=’List1‘))select.select_by_visible_text(项目1)参考文献
您可以在以下几个方面找到相关的讨论:
https://stackoverflow.com/questions/66091616
复制相似问题