【问题标题】:How do I select items from a drop down box in selenium using python如何使用 python 从 selenium 的下拉框中选择项目
【发布时间】:2019-02-08 21:39:47
【问题描述】:

我正在尝试遍历用于网页抓取的下拉列表,但我注意到我的代码无法正常工作

dropdown = browser.find_element_by_XPATH('//*[@id="department-dropdown"]')
select = Select(dropdown)

select.select_by_value("Accounting")

我收到的错误消息

Traceback (most recent call last):
  File "C:\Users\David\eclipse-workspace\Web_Scrap\setup.py", line 31, in <module>
    dropdown = browser.find_element_by_XPATH('//*[@id="mainContent"]/div[1]/div/div[3]/div/div/span')
AttributeError: 'WebDriver' object has no attribute 'find_element_by_XPATH'

现在我试图选择至少第一个值,但它只是不工作

The picture provided has the "inspect element" of the dropdown box i'm attempting to cycle through

下拉框元素不是实际列表的一部分,这似乎有点令人困惑,有人可以告诉我这里实际发生了什么吗?如果我看错了。

如果有人对我可以做些什么来实现我的目标有任何建议

【问题讨论】:

  • find_element_by_XPATH 应该是find_element_by_xpath

标签: python-3.x selenium selenium-webdriver xpath dropdown


【解决方案1】:

您的下拉框是一个 CSS 下拉框,而不是纯由 &lt;select&gt;&lt;option&gt; 标签实现的原生下拉框。

下拉选项来自&lt;ul class="typeahead typeahead-long dropdown-menu"内的li,只有在点击右侧的向下箭头后才会附加到页面上。

&lt;select&gt; 和许多&lt;option&gt; 的原因是上述li 的属性:data-value 在这些&lt;option&gt; 上创建。你可以认为这些&lt;option&gt;li的数据源。所以&lt;select&gt; 在页面上不可见,就像在前端提供数据的数据库一样,因此&lt;select&gt; 样式设置为display: none,这意味着在页面上不可见。

要充当用户行为,您应该在单击以展开所有li 后,从ul 内的li 中找到并选择选项。而不是从不可见的 &lt;select&gt; 中选择选项或更改 select 显示 css 值以使其可见,然后从中选择选项。

// click down arrow to expand all options
driver.find_element_by_css_selector(
    ".department-combobox .input-group > span").click();

// search all options
options = driver.find_elements_by_css_selector(
    ".department-combobox .input-group > ul > li")

// print all option text
for(opt in options):
    println opt.text

// select specific option by text
target = 'Anthropology'
driver.find_element_by_css_selector(
    ".department-combobox .input-group > ul")
    .find_element_by_xpath("./li[.="+target+"]")
    .click();

【讨论】:

    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2021-12-08
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多