我有一个按钮,当我点击它时,我会得到一个下拉列表。我的问题是,我想点击此下拉列表中的一个选项,但我不知道如何引用它。
我试图表现得好像这是一个列表框,我使用了" Select"模块,但我失败了例外。我的目的是能够参考此下拉列表中的任何选项。可能是HTML代码缺少唯一的href值吗?
<input name="Port 19" value="Uplink" class="ExtendedButton" onclick="SelectFrame('Uplink-200')" id="Port-19" style="width: 84px; display: inline;" type="button">
<script>writeUplinkDropDown()</script>
<div class="dropdown-content">
<a href="#" onclick="SelectFrame("Uplink-200")">200G</a>
<a href="#" onclick="SelectFrame("Port-19")">100G #1</a>
<a href="#" onclick="SelectFrame("Port-20")">100G #2</a>
</div>
&#13;
答案 0 :(得分:2)
您需要做的第一件事是打开下拉菜单。菜单打开后,您可以使用以下任何选择器示例单击您发布的任何选项:
npm i --save svg4everybody
答案 1 :(得分:0)
Selenium的Select
类仅适用于原生<select>
元素。由于您已使用自定义HTML实现了下拉列表,因此无法使用它。
相反,为了选择自定义下拉列表中的一个选项,您需要执行真实用户的每个操作:
注意:在网页上搜索元素时,请始终尝试使用与真实用户相同的条件。真实用户会查找带有一些有意义文本的链接,例如“200G”;他们不去搜索寻找特定onclick
属性的源代码。 (更重要的是,onclick
属性是页面实现的一部分,而不是界面,不应该依赖于它,因为它可能随时改变。)
Selenium没有提供查找按钮的显式方法,但您可以使用CSS或XPath来执行此操作:
driver.find_element_by_css_selector("input[type='button'][value='Uplink']")
driver.find_element_by_xpath("//input[@type = 'button'][@value = 'Uplink']")
要查找链接,Selenium可以方便地提供find_element_by_link_text()
:
driver.find_element_by_link_text("200G").click()
driver.find_element_by_link_text("100G #1").click()
driver.find_element_by_link_text("100G #2").click()
裸硒可以变幻无常。该链接可能尚未在DOM中。或者它可能还不可见。
capybara-py透明地解决了这些问题:
page.click_button("Uplink")
page.click_link("200G")
page.click_link("100G #1")
page.click_link("100G #2")