【问题标题】:How to dealing with the web element that have a changing "css selector" value in selenium?如何处理在 selenium 中具有不断变化的“css 选择器”值的 web 元素?
【发布时间】:2021-07-01 21:43:37
【问题描述】:

在 selenium 中,有没有办法通过提供字段名称来获取 css-selector 值?

我正在尝试编写一些 selenium 案例来填写下一页中的一些输入。

但不幸的是,此页面上的元素既不是 id 也不是命名的。我可以访问这些字段的唯一方法是通过它们的 css-selector 值,就像:

self.driver.find_element_by_css_selector("...")

此时我正在查看此网页,

本地访问设置区域的css-selector值为:

#app > div.app > div > div > div.content > div:nth-child(2) > div > div:nth-child(3) > div.section-title

http 文本字段的 css-selector 值为:

#app > div.app > div > div > div.content > div:nth-child(2) > div > div:nth-child(3) > div.row > div:nth-child(1) > div > div.col-8.formik-custom-field > div > input[type=text]

但痛苦的部分是,对于这两个 css-selector 值,它的“div:nth-child(3)”部分一直在变化。它取决于前一页上通向当前页面的输入。 它可能是“div:nth-child(4)”、“div:nth-child(5)”,甚至是“div:nth-child” (6)"。

所以我在想也许我可以先找到 Local Access Settings 字符串的 css-selector 值,然后在此基础上为 http 连接 css-selector 字符串strong> 文本区域。

所以我的问题是,如果我在我的 selenium 代码中提供此“本地访问设置”关键字,我如何获得 css-selector 值?

谢谢,

杰克

【问题讨论】:

  • 不看一些html很难说...

标签: python-3.x selenium selenium-chromedriver


【解决方案1】:

如果问题是通过子编号更改 CSS,例如 div:nth-child(2)div:nth-child(3) 你可以使用一些这样的循环

import itertools 
from selenium.common.exceptions import NoSuchElementException

for i in itertools.count(start=1):
    try:
       self.driver.find_element_by_css_selector("#app > div.app > div > div > div.content > div:nth-child(' + str(i) + ')")
    except NoSuchElementException:
       pass

这将尝试从 1 到无限数量的孩子编号,您可以将其添加到每个正在更改的孩子 在更改元素子编号上使用此(' + str(i) + '),如果问题是其他问题,请确认我

【讨论】:

  • 感谢您的帮助。但我觉得这将是我的后备计划。因为该页面上还有其他部分,并且有可能我最终没有出现这种异常,因为该页面上的其他元素也符合此检查。
  • 您可以在某些特定的循环上使用循环,让其他循环正常进行,您可以根据需要定义循环,只需将字符串从 i 更改为 a.b.c 我有一个这样的项目和这个是我最好的解决方案,而不是那个,请提供一些目标 URL 示例
  • 感谢您的提示。正如你所建议的,我找到了一种让代码正常工作的方法。但是代码对我来说看起来很难看。一般来说,创建原始网页的人是否应该负责添加 ID 或名称,这使得其余工作更容易?
  • 是的,他们负责创建可读代码,但大多数情况下他们这样做是有原因的,例如:避免抓取
猜你喜欢
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 2013-09-20
  • 2014-08-04
  • 1970-01-01
  • 2018-03-28
相关资源
最近更新 更多