【问题标题】:Selenium in Python - drop-down menuPython 中的 Selenium - 下拉菜单
【发布时间】:2019-04-05 19:09:51
【问题描述】:

我正在尝试找到一个下拉元素,以便从中选择一个选项,我已经看到 Selenium 有一个用于处理选择下拉列表的内置类,但是我很难真正找到该元素.

谁能告诉我哪里出错了?

我正在寻找的元素

<div>
<label>Department<font color="red"><em>*</em></font></label>
<select name="department">
<option value="XXX">Select</option>
<option value="1">Department 1</option>
<option value="2">Department 2</option>
<option value="3">Department 3</option>
</div>

我的尝试

browser.find_element_by_xpath("//div[@label='Department']")
browser.find_element_by_xpath("//div[@name='Department']")

browser.find_element_by_xpath("//select[@label='Department']")
browser.find_element_by_xpath("//select[@name='Department']")

不高兴 - 有人打电话告诉我哪里出错了吗?

为基本问题道歉 - selenium 新手和初学者程序员。

谢谢。

【问题讨论】:

  • 最后一个 xpath "//select[@name='Department']" 应该可以工作。当你尝试它时会发生什么?尝试添加一些wait。
  • @Guy 感谢您的快速回复。使用最后一个 xpath 只会给我一个通用的 selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //select[@name='Department']} 我现在将尝试显式等待!
  • @Guy element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "//select[@name='Department']"))) 也找不到元素。
  • 检查下拉菜单是否在 iframe 内。
  • @Guy 就是这样,非常感谢!

标签: python selenium selenium-webdriver web-scraping webdriver


【解决方案1】:

在您的 dom 中,两个点具有唯一标识来查找选择元素。

1.一个选择标签本身具有名称属性,其值为“部门”。 (小盒子)

 browser.find_element_by_name("department")

或

 browser.find_element_by_xpath("//select[@name ='department']")

或

 browser. find_element_by_css_selector("select[name='department']")

2.另一个是innerText标签为'Department'(title),它是select的兄弟

 browser.find_element_by_xpath("//label[text() = 'department']/following-sibling::select")

【讨论】:

    【解决方案2】:

    我遇到的问题是由于选择/下拉列表位于 iframe 内。感谢 Guy 告诉我检查这个。

    要检查元素是否在 iframe 中,只需检查网站元素并查找包含的 &lt;iframe&gt; 标记。

    在研究了如何解决这个问题后,我用以下代码解决了我的问题。

    iframe = browser.find_element_by_xpath("//iframe[@name='frame2']")
    browser.switch_to_frame(iframe)
    browser.find_element_by_xpath("//select[@name='department']")
    

    再次感谢小伙子!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 2020-02-22
      • 2023-03-25
      • 2022-11-11
      相关资源
      最近更新 更多