如何处理 selenium 中 "css selector" 值不断变化的 Web 元素?
How to dealing with the web element that have a changing "css selector" value in selenium?
在 selenium 中,有没有一种方法可以通过提供字段名称来获取 css-选择器值?
我正在尝试编写一些 selenium 案例来填充下一页中的一些输入。
但不幸的是,这个页面上的元素既没有 id 也没有命名。我可以到达这些字段的唯一方法是通过它们的 css-选择器值,就像 :
self.driver.find_element_by_css_selector("...")
此刻我正在看这个网页,
本地访问设置区域的css选择器值为:
#app > div.app > div > div > div.content > div:nth-child(2) > div > div:nth-child(3) > div.section-title
和 http 文本字段的 css-选择器值为:
#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-选择器值,它的“div:nth-child(3)”部分是保留改变。它取决于导致当前页面的前一页上的输入。
可能是“div:nth-child(4)”, “div:nth-child(5)”,甚至是“div:nth-child(6)”。
所以我在想也许我可以先找到 Local Access Settings 字符串的 css-selector 值,然后以此为基础连接 css-http 文本区域的选择器字符串。
所以我的问题是,如果我在我的 selenium 代码中提供此“本地访问设置”关键字,我如何获得 css-选择器值?
谢谢,
杰克
如果问题正在 CSS 改变 child 个数字,例如 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 到无限制的 child 数字,您可以将其添加到每个正在变化的 child
在更改元素 child 编号上使用此 (' + str(i) + ')
,如果问题是其他问题,请确认我
在 selenium 中,有没有一种方法可以通过提供字段名称来获取 css-选择器值?
我正在尝试编写一些 selenium 案例来填充下一页中的一些输入。
但不幸的是,这个页面上的元素既没有 id 也没有命名。我可以到达这些字段的唯一方法是通过它们的 css-选择器值,就像 :
self.driver.find_element_by_css_selector("...")
此刻我正在看这个网页,
本地访问设置区域的css选择器值为:
#app > div.app > div > div > div.content > div:nth-child(2) > div > div:nth-child(3) > div.section-title
和 http 文本字段的 css-选择器值为:
#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-选择器值,它的“div:nth-child(3)”部分是保留改变。它取决于导致当前页面的前一页上的输入。 可能是“div:nth-child(4)”, “div:nth-child(5)”,甚至是“div:nth-child(6)”。
所以我在想也许我可以先找到 Local Access Settings 字符串的 css-selector 值,然后以此为基础连接 css-http 文本区域的选择器字符串。
所以我的问题是,如果我在我的 selenium 代码中提供此“本地访问设置”关键字,我如何获得 css-选择器值?
谢谢,
杰克
如果问题正在 CSS 改变 child 个数字,例如 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 到无限制的 child 数字,您可以将其添加到每个正在变化的 child
在更改元素 child 编号上使用此 (' + str(i) + ')
,如果问题是其他问题,请确认我