【问题标题】:Css or Xpath selector can't select a list elementCss 或 Xpath 选择器无法选择列表元素
【发布时间】:2020-03-05 05:43:27
【问题描述】:

我正在尝试自动化网站上的一个流程,该流程会为其元素动态生成 ID:

ID 具有以下形式: ZCODE:FORM:j_1279323:元素

我设法为大多数元素制作了 CSS 或 XPATH 选择器。 我正在努力使用ul/li 元素,我设法用它的id 点击它,但不是用相对的XPath,这是我的目标:

我尝试了各种 xpath: /html[1]/body/[1]/div[37]/div[1]/ul[1]/li[13]

还有: //div[contains(@id, 'voie_panel')]/div/ul/li[13]

还有许多其他不同的方式.. 我测试的所有 xpath/css 选择器都可以在 chrome 开发者控制台中完美运行。

我只设法将列表下拉,但是当我尝试访问列表元素时......它超时了。

我正在使用WebDriverWait,我还尝试在必须加载程序的确切位置暂停程序以便单击列表。

我等待元素:

myElem = WebDriverWait(self.driver, 30).until(ec.element_to_be_clickable((BY.XPATH, css))

总结一下情况: 它使用 ID 可以顺利运行,但使用 xpath 或 css 选择器会超时

有人可以推荐一种策略来克服这个问题吗?

【问题讨论】:

  • 你能分享你的html代码
  • 任何以/html 开头的 XPath 肯定会变得脆弱/不可靠。您的代码 ec.element_to_be_clickable((BY.XPATH, css) 看起来很可疑,但如果没有更多上下文,我们无法知道。定位器策略在这里讨论:seleniumhq.org/docs/…
  • 我会在下周二回复它,谢谢

标签: python selenium rpa


【解决方案1】:

如果您使用的是 selenium 网络驱动程序,您可以将其添加到您的代码中

    chrome_options = webdriver.ChromeOptions()
    scpathTemp = str(scpathTemp).replace('/', '\\').strip()
    preferences = {"safebrowsing.enabled": True}
    chrome_options.add_experimental_option("prefs", preferences)

    driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=master_path + "/chromedriver.exe")
    driver.find_element_by_xpath("/html[1]/body/[1]/div[37]/div[1]/ul[1]/li[13]").click()

【讨论】:

  • 您能否添加一些关于此代码实际完成的功能以及它如何帮助 OP 的说明。
猜你喜欢
  • 1970-01-01
  • 2015-04-28
  • 2021-12-22
  • 2018-08-05
  • 2014-09-14
  • 2019-01-25
  • 2021-11-15
  • 2019-12-25
  • 2012-08-16
相关资源
最近更新 更多