硒重复元素标记为== $ 0

时间:2019-05-31 06:38:30

标签: java selenium google-chrome google-chrome-devtools code-inspection

如何处理硒中重复元素,其中重复元素带有==$0标记?

转到www.google.com并搜索google搜索按钮,我已经尝试过迭代器并创建列表,但这是处理==$0的正确方法

driver.findElements(By.xpath("//input[@aria-label='Google Search']"));

我要选择第二个元素。

3 个答案:

答案 0 :(得分:2)

$0 - $4

$0$1$2$3$4是对最后五个DOM元素的历史参考的“元素”面板中或在“个人档案”面板中选择的最后五个 JavaScript堆对象中进行了检查。 $0返回最近选择的元素或JavaScript对象,$1返回最近选择的第二个元素,依此类推。


在您的用例中,您已通过“元素”面板检查了 Google搜索按钮。因此,在控制台抽屉中,$0已被评估并显示与以下元素相同的元素:

$0


有关用例的更多信息将有助于我们以更好的方式回答您的问题。但是,HTML DOM中的每个元素都可以使用进行唯一标识。

如果您的用例是 Google搜索任何特定的术语/短语,则可以使用以下解决方案:

WebElement searchField = driver.findElement(By.name("q"));
searchField.sendKeys("user3245610");
searchField.sendKeys("Keys.RETURN");
  

您可以在How to click a random link from google search results through Selenium and Python

中找到详细的相关讨论。

答案 1 :(得分:0)

您要单击的可见按钮是div的后代,该div具有“ FPdoLc VlcLAe”类,因此可以使用

进行选择
driver.findElements(By.xpath("//div[@class='FPdoLc VlcLAe']//input[@name='btnK']"));

enter image description here

不可见的是div的后代,该div的类=“ VlcLAe”,但没有“ FPdoLc”,因此有所不同。

答案 2 :(得分:0)

使用 // input [@ aria-label ='Google搜索']

时,您将获得两个值

enter image description here

一种可能的解决方案是使用:(// input [@ aria-label ='Google搜索'])[2] (实心括号中的值,即2应该不带空格)

例如-driver.findElement(By.xpath(“(// input [@ aria-label ='Google搜索'])[2]”); //(实心括号中的值,即2应该不带空格)

enter image description here