标有 ==$0 的硒重复元素
Posted
技术标签:
【中文标题】标有 ==$0 的硒重复元素【英文标题】:Selenium Duplicate Elements marked with ==$0 【发布时间】:2019-10-16 19:08:48 【问题描述】:如何处理 selenium 中的重复元素,其中重复元素用==$0
标记?
转到 www.google.com 并搜索 google 搜索按钮,我已经尝试过迭代器和创建列表,但是,这是处理 ==$0
的正确方法
driver.findElements(By.xpath("//input[@aria-label='Google Search']"));
我想选择第二个元素。
【问题讨论】:
【参考方案1】:您想要单击的可见按钮是具有“FPdoLc VlcLAe”类的 div 的后代,因此您可以使用
选择它driver.findElements(By.xpath("//div[@class='FPdoLc VlcLAe']//input[@name='btnK']"));
不可见的是具有 class= "VlcLAe" 但没有 "FPdoLc" 的 div 的后代,所以这就是区别。
【讨论】:
【参考方案2】:您在使用 //input[@aria-label='Google Search']
时获得了两个值一种可能的解决方案是使用:(//input[@aria-label='Google Search'])[2](实心括号中的值,即 2 应该没有空格)
例如 - driver.findElement(By.xpath("(//input[@aria-label='Google Search'])[ 2 ]"); //(实心括号中的值,即2应该没有空格)
【讨论】:
【参考方案3】:$0 - $4
$0
、$1
、$2
、$3
和 $4
是对在 google-chrome-devtools 的“元素”面板中检查的最后五个 DOM 元素的历史引用或在“配置文件”面板中选择的最后五个 javascript 堆对象。 $0
返回最近选择的元素或 JavaScript 对象,$1
返回第二最近选择的元素,以此类推。
在您的用例中,您已经通过元素面板检查了 Google 搜索 按钮。因此,在控制台抽屉中,$0
已被评估并显示与以下相同的元素:
更多关于您的用例的信息将有助于我们以更好的方式回答您的问题。但是,html DOM 中的每个元素都可以使用css-selectors 或xpath 唯一标识。
如果您的用例是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找到详细的相关讨论
【讨论】:
以上是关于标有 ==$0 的硒重复元素的主要内容,如果未能解决你的问题,请参考以下文章