如何使用 Xpath、css 或 Selenium 中的任何其他定位器在 html 中的结束标记后查找带有“== $0”的元素
Posted
技术标签:
【中文标题】如何使用 Xpath、css 或 Selenium 中的任何其他定位器在 html 中的结束标记后查找带有“== $0”的元素【英文标题】:How to find element with "== $0" after end tag in html using Xpath, css or any other locators in Selenium 【发布时间】:2020-03-20 21:00:53 【问题描述】:我必须在“span”的结束标记之后找到带有“== $0”的元素。下面是元素的html代码。
<div _ngcontent-c6="" class="col-12">
<span _ngcontent-c6="">Registration with prefilled user's data</span>
</div>
虽然我复制了 html 代码,但它本身正在删除“== $0”。所以我也附上图片。
我试图找出解决方案,但没有奏效。我已经尝试过通常像 .//span[text()='Registration with prefilled user's data'] 这样的 xpath,但没有成功。我刚刚发现“我们可以在 chrome 控制台中使用语法 '$0' 访问这个元素,并且在那里工作正常
但我不知道如何使用 xpath 和 CSS 或 Selenium 中任何推荐的定位器策略找到它。
注意:请不要提及任何变通方法,例如使用 className 或 css 与类名如 div.col-12 span 作为我已经知道了。我的问题是使用 == $0 处理元素。
【问题讨论】:
【参考方案1】:所以== $0
的文字并不完全是您认为的意思。这只是 Chrome 开发工具的一个功能,而不是页面上的实际元素。它是开发工具使用的一个属性,允许您通过控制台测试脚本。这已在here 讨论过,它不会影响 Selenium 在页面上定位元素的能力。
问题可能是您正在使用的选择器,也可能是 DOM 中隐藏的 iframe
元素遮挡了该元素。
你可以试试这个 XPath:
//span[contains(text(), "Registration with prefilled user's data")]
我刚刚将text()='text'
查询换成了contains(text(), 'text')
,这可能是span
元素中任何隐藏空格的原因。
鉴于页面上没有特殊情况,此 XPath 对于 span
元素是正确的。因此,如果这对您不起作用,建议发布完整的 HTML 或指向您正在自动化的页面的链接,以便我们都能更好地帮助您。
【讨论】:
是的,我浏览了这篇文章***.com/questions/36999739/…。但我多次遇到这个问题。如果此 '== $0' 附加到元素,则正常解决方案不起作用。虽然我已经检查过没有 Iframe 并且它不适用于 //span[contains(text(), 'Registration with prefilled user's data')] 和 this "//span[contains(., 'Registration with prefilled user's data ')]" 太 这 ==$0 不会影响 Selenium——它实际上并不存在于 DOM 上。如果你print(driver.page_source)
它不会在那里。我什至在打开浏览器的地方运行了测试 Selenium 代码,检查元素,因此“==$0”出现在元素上,并且仍然没有问题地找到它。您的代码中还有一些其他内容未包含在此问题中,例如额外的 HTML 或更多代码示例(除了您尝试过的 XPath)。如果你想解决这个问题,那么你应该通过包含它来帮助我们。
@Christine,您可能需要仔细检查您的替换,因为您在文本周围使用单引号,但文本也包含单引号 ("user's"),这可能会把它扔掉
@MivaScott 好电话。 XPath 通常会在引号引起干扰的情况下抛出特定的错误,例如“路径无效”,但这些引号可能是问题的原因。
@MivaScott 我认为单引号是问题所在,我完全错过了它。谢谢克里斯汀的详细回答。以上是关于如何使用 Xpath、css 或 Selenium 中的任何其他定位器在 html 中的结束标记后查找带有“== $0”的元素的主要内容,如果未能解决你的问题,请参考以下文章
selenium使用Xpath+CSS+JavaScript+jQuery的定位方法(治疗selenium各种定位不到,点击不了的并发症)
Selenium 使用 css、xpath、name、id (python) 找不到任何元素
selenium使用Xpath+CSS+JavaScript+jQuery的定位方法(治疗selenium各种定位不到,点击不了的并发症)