【发布时间】:2018-07-12 03:29:25
【问题描述】:
它们都在索引为 [1] 时被识别,而对于索引 [2] 则没有任何识别。唯一将它们分开的是第一个弹出窗口有display:none,另一个弹出窗口有display:block,但是由于Xpath,它们在决定这个特定字段时没有发挥作用,因为这些字段是从一些不同的来源获取的。
唉,尽管这些 div 有相同的元素,但它们有一个文档属性,因此,这些 div 的 Xpath 不是以这个 div 开头,而是在文档的一部分之后。我已经尽我所能,我可以给你一个模糊的想法,看看下面的代码是什么样子的。
代码如下:
<div name='some-name' style="display:none;">
...
<!document>
<div id='some-id'>
....
<button name='some-name-2'>some-button-name</button>
....
</div>
...
</div>
<div name='some-name' style="display:block;">
...
<!document>
<div is='some-id'>
....
<button name='some-name-2'>some-button-name</button>
....
</div>
...
</div>
所以他们的两个 Xpath 看起来都像:
[id='some-id']/...../按钮
Giving ([id='some-id']/...../button)[1] 获取两个元素。
Giving ([id='some-id']/...../button)[2] 不获取它们。
更新
在这种情况下,我有两个 iframe,因为我必须在它们之间切换,所以没有被检测到。谢谢,我解决了这个问题。
【问题讨论】:
-
我怀疑您是否使用
([id='some-id']/...../button)[1]获取这两个元素,因为此 xpath 不能返回多个元素。由于您的 html 有一些<!document>,因此您的问题可能是由于框架造成的。搜索如何使用 Selenium 处理帧。 -
为什么不测试包含的 div 的样式,如果这就是全部不同的话?
-
实际上,它根本没有被检测到,样式不是作为根来的,它结束了 选项卡之前的所有内容
-
您的 XPath 选择器中是否有连续四个句点?或者您是否使用它来表明存在像您在代码部分中显示的干预标签?请编辑问题,以便它显示您正在使用的确切 XPath。
-
你能给我们更多的 HTML DOM 吗?未更改、格式化、基于文本?
标签: javascript html selenium xpath