.//*[@id='1']/div/ul/li[5]
.tab-header-home
现在我希望从基于id的XPath生成唯一的基于类的XPath。Firepath生成的类XPath可能指向多个元素,而不是唯一的。但是firepath生成的id XPath总是唯一的,即指向单个元素。
所以,我正在尽可能地生成两个之间的映射。但我需要测试以下内容:
xpath( .//*[@id='1']/div/ul/li[5]) == xpath(.tab-header-home )
以确保我创建的类xpath对应于所需的DOM元素。任何帮助都将得到高度赞赏。我希望生成的xpath示例是:
.//*[@id='29']/descendant::div[@class='template-parent-search-box']
目标是减少xpath的深度,以便DOM结构中的任何更改(如添加Div等)都不会使xpath无效。
您到底是如何使用XPath的?请注意,XPath在IE中可能无法工作,至少在没有shim的情况下是这样的(它的原生支持仅限于XML)。
但是使用适当的polyfill/shim,您应该能够只比较DOM元素(或者在返回多个XPath结果的情况下遍历每个XPath结果并比较每个单独的项)。
if (xPathClassDOM === xPathIDDDOM) {...}
此外,.tab-header-home
不是XPath,而是CSS选择器,但如果您抓取了DOM元素,例如通过document.queryselector
)将其与从XPath检索的元素进行比较。
例如:
JavaScript:
var classBasedExpression = ".tab-header-home"; // CSS-Selector-based
var idBasedExpression = ".//*[@id='1']/div/ul/li[5]"; // XPath-based
var firstCSSSelection = document.querySelector(classBasedExpression);
var iterator = document.evaluate(idBasedExpression, document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null );
try {
var thisNode = iterator.iterateNext();
while (thisNode) {
if (firstCSSSelection === thisNode) {
alert('found!')
break;
}
thisNode = iterator.iterateNext();
}
}
catch (e) {
alert('error:' + e);
}
HTML:
<div id="1">
<div>
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li class="tab-header-home">e</li>
</ul>
</div>
</div>
我得到了两个字符串类型arraylist。一个列表包含“book1”、“book2”、“book3”和“book4”。另一个arrayList包含“book1”、“book2”、“book3”。因此,第一个列表的大小为4,第二个列表的大小为3。我创建了另一个与第一个列表大小相等的arrayList 但是当我这样做的时候,我不能设置1,因为我不能进入if状态,有人能帮我吗
问题内容: 我得到了两个String类型的arraylist ..一个包含“ book1”,“ book2”,“ book3”和“ book4”的列表。另一个arrayList包含“ book1”,“ book2”,“ book3”。因此,第一个列表的大小为4,第二个列表的大小为3。我创建了另一个与第一个列表的大小相等的arrayList 如果两个列表之间的内容相等,那么我将设置为1而不是0。 所
请帮助我提供一个解决方案,通过使用SeleniumRubyWebDriver比较Web应用程序的两个URL中的两个图像是否相同(我的意思是每个图像中的内容都相同)。 例如:访问下面的网址时,我有一个小图像显示: 访问下面的URL时,我还有另一个图像: 我怎样才能比较这两个图像,看看他们是否是相同的使用Selenium Ruby WebDrive?任何建议都很感激。非常感谢。
我想比较ArrayList中的两个元素,我编写了以下代码: 结果为,但具有其他值,如: 我知道比较的是引用,而不是值,在这种情况下,这两个整数有不同的引用,因此从逻辑上讲,这两种情况都必须有。我不明白为什么我只对从的取而对其他取。 注:我在Stackoverflow和Google上看到很多问题,但我找不到我问题的答案
我需要获得一个DOM元素的XPath来持久化它,这样我就可以查找该元素。 我已经尝试了这个答案的方法,但是当我用jQuery创建的对象调用该方法时... ...我得到这个错误: 未捕获的TypeError:无法读取未定义(…)的属性“子节点” 我尝试将替换为,将替换为,将替换为,但我收到未定义为函数结果的... 那么,您是否有一个与类似的函数可以使用jQuery呢?
问题内容: 有人遇到过这个问题吗?假设您有两个类似以下的数组 有没有一种方法可以比较b中a中的哪些元素?例如, 我正在尝试避免循环,因为要花费数百万个元素才能解决问题。有任何想法吗? 干杯 问题答案: 实际上,有一个比以下任何一种方法更简单的解决方案: 所得的c为: