Selenium 通过 Id 获取元素,该元素在没有 Xpath 的情况下位于另一个元素内
Selenium Get Element By Id Which Is Inside Another Element Without Xpath
我正在做一个小型自动化项目。
我正在处理的网站有一个奇怪的设计。它有多个具有相同 id 的元素。并且该网站按预期工作(多个相同的 ID 不会造成任何问题)
我需要到达所有这些元素,但我不能,因为它们的 ID 都是相同的。
我能接触到所有这些的唯一方法是使用“完整的 xpath”,但这个解决方案不会是一个长期的解决方案,因为只向网站添加一个 div 会导致完整的 xpath 无法正常工作.
我想到达具有外部元素的元素,例如:
elements = driver.find_elements_by_class_name("classs")
for element in elements:
element.find_element_by_id("idOfElement")
#OR
element.find_element_by_class_name("classOfTheElement"
这不是一个工作代码,我只是想让你明白我想要什么。
有办法吗?
编辑:
网站有一系列元素,就是上传一个对象的变体,这些变体中的id是相同的。我需要到达这些 id'ed 元素并发送一些密钥。这是一个类似的 html 树:
<div class="generalClass">
<div class="someElement">
<input id="idOfInput>
</div>
<div class="someElement">
<input id="idOfInput>
</div>
</div>
您不必使用绝对 XPath,这可以通过相对 XPath 清楚地完成。
根据您的示例,您可以执行以下操作:
outer_element = driver.find_element_by_class_name("classs")
desired_elements = driver.find_elements_by_xpath(".//input[@id='idOfInput']")
或者更简单地使用单个相对 XPath:
desired_elements = driver.find_elements_by_xpath('//div[@class="classs"]//input[@id="idOfInput"]')
有时 id
在元素中不可用,并且单个 class 也与其他元素共享,因此 xpath
是更好的选择,您可以找到 xpath在开发人员工具中使用检查的元素,如果您自己编写路径,您可以验证它是否指向正确的元素,这里是如何
- 右击然后检查
ctrl
+
F
- 输入你path/selector
- 点击
Enter
它将突出显示所选元素。
我正在做一个小型自动化项目。
我正在处理的网站有一个奇怪的设计。它有多个具有相同 id 的元素。并且该网站按预期工作(多个相同的 ID 不会造成任何问题)
我需要到达所有这些元素,但我不能,因为它们的 ID 都是相同的。
我能接触到所有这些的唯一方法是使用“完整的 xpath”,但这个解决方案不会是一个长期的解决方案,因为只向网站添加一个 div 会导致完整的 xpath 无法正常工作.
我想到达具有外部元素的元素,例如:
elements = driver.find_elements_by_class_name("classs")
for element in elements:
element.find_element_by_id("idOfElement")
#OR
element.find_element_by_class_name("classOfTheElement"
这不是一个工作代码,我只是想让你明白我想要什么。 有办法吗?
编辑: 网站有一系列元素,就是上传一个对象的变体,这些变体中的id是相同的。我需要到达这些 id'ed 元素并发送一些密钥。这是一个类似的 html 树:
<div class="generalClass">
<div class="someElement">
<input id="idOfInput>
</div>
<div class="someElement">
<input id="idOfInput>
</div>
</div>
您不必使用绝对 XPath,这可以通过相对 XPath 清楚地完成。
根据您的示例,您可以执行以下操作:
outer_element = driver.find_element_by_class_name("classs")
desired_elements = driver.find_elements_by_xpath(".//input[@id='idOfInput']")
或者更简单地使用单个相对 XPath:
desired_elements = driver.find_elements_by_xpath('//div[@class="classs"]//input[@id="idOfInput"]')
有时 id
在元素中不可用,并且单个 class 也与其他元素共享,因此 xpath
是更好的选择,您可以找到 xpath在开发人员工具中使用检查的元素,如果您自己编写路径,您可以验证它是否指向正确的元素,这里是如何
- 右击然后检查
ctrl
+
F
- 输入你path/selector
- 点击
Enter
它将突出显示所选元素。