我正在尝试使用Selenium和定位器根据已给定的元素选择一个元素,但是我正在尝试加快过程,在这种情况下XPath并没有真正帮助我。
这是我正在使用的HTML的结构。
reMsg.Font.Name := labMsg.Font.Name;
reMsg.Font.Charset := labMsg.Font.Charset;
截至目前,我正在使用这些XPath查找文本1和文本2
<div class="inner-article">
<h1>
<a class="name-link">
Text 1
</a>
</h1>
<p>
<a class="name-link">
Text 2
</a>
</p>
</div>
由于XPath有明显的延迟,我想知道是否有可能使用XPath以外的其他更快的定位器。我真的什么也没想到,因为CSS选择器不是一个选择,我也想不出使用其他选择器的方法。
答案 0 :(得分:0)
只需找到该x路径的索引号,然后加1即可得到下一个相邻的xpath元素。
iterlist = iter( driver.get_all_elements_by_xpath ("//a[contains(., 'Text 1')]"))
while xpathFound == False :
myElement = next(iterlist) # get the next item
xpathFound = True if myElement == text1xpath else False
答案 1 :(得分:0)
作为文本为{strong>文本1 的{
general : {
splash : {
"title" : "lorem title",
"description" : "lorem description",
"link" : {
"text" : "click me"
}
}
}
}
节点,始终在父父节点<a>
和父节点<div class="inner-article">
和<h1>
节点之内文本为文本2 的文本始终位于大父节点<a>
和父节点<div class="inner-article">
中,则可以使用以下任一解决方案:
<p>
xpath
文本2的 element_text1 = driver.find_element_by_xpath("//div[@class='inner-article']/h1/a[@class='name-link' and contains(., 'Text 1')]")
xpath
文本2的 element_text2 = driver.find_element_by_xpath("//div[@class='inner-article']//p/a[@class='name-link' and contains(., 'Text 2')]")- `xpath` for _Text 1_:
element_text1 = driver.find_element_by_xpath("//div[@class='inner-article']/h1/a[@class='name-link' and contains(., 'Text 1')]")
xpath
element_text2 = driver.find_element_by_xpath("//div[@class='inner-article']//p/a[@class='name-link' and contains(., 'Text 2')]")
表示文本1 和文本2(wrt文本1):
xpath