【问题标题】:Selenium: Choosing from a drop-down menuSelenium:从下拉菜单中选择
【发布时间】:2018-09-07 04:57:45
【问题描述】:

我正在尝试自动化,但在尝试从下拉菜单中进行选择时遇到了一些问题。我能够启动 Chrome 会话并登录到页面,但是当我到达那里时,它似乎没有正确定位元素。

下拉菜单:LINKNOLONGERAVAILABLE

下拉菜单的 HTML 代码:LINKNOLONGERAVAILABLE

我的 webdriver 代码:

s1 = Select(driver.find_element_by_id("X")) 

s1.select_by_value("X")

不确定我是否选择了正确的 ID,或者我是否需要实现其他东西(比如等待?)。我试过 xpath、css 选择器、按名称和按 id,但无济于事。

感谢您的帮助!

编辑:元素被包裹在一个 iFrame 中,我所要做的就是切换框架,它就可以工作了:D

【问题讨论】:

  • 抛出什么异常?

标签: python selenium automation


【解决方案1】:

如果您想尝试等待,可以按照以下代码进行操作:

wait = WebDriverWait(driver, 10)
drop_down= wait.until(EC.visibility_of((By.CSS_SELECTOR, "select.PSDROPDOWNLIST[name^='TL_RPTD_TIME_PUNCH_TYPE'][id^='TL_RPTD_TIME_PUNCH_TYPE']")))  

select = Select(drop_down)

# select by visible text
select.select_by_visible_text('Transfer')  

我不确定 ID 是否是唯一的,所以我构造了一个带有 ID、名称和类名 的 CSS 选择器。

你必须导入这些:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 

希望这会有所帮助。

【讨论】:

  • 您好,谢谢您的回复。我实现了一切,它向我发送了这个错误。对于上下文,我为您提供了所有内容:这是我的代码:pastebin.com/x1pxEbaV 这是错误:gyazo.com/7d9754eff15633c72cfd101b23eb1f53
  • 您共享的 URL (hr92.ps.chla.usc.edu/psc/PCHL2J/EMPLOYEE/HRMS/c/…) 表示无法访问该站点。你能分享域吗
  • 抱歉,无法联系到它,因为它位于我工作地点的 Intranet 上。有什么想法吗?
  • 你可以打印吗:elements = driver.find_elements_by_css_selector("select.PSDROPDOWNLIST[name^='TL_RPTD_TIME_PUNCH_TYPE'][id^='TL_RPTD_TIME_PUNCH_TYPE']") 然后print(len(elements))
  • 您是否在代码中的任何地方使用 is_displayed ?原因是例外。
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多