如何使用 Selenium Java 中的包含文本获取元素的直接标记
How to fetch the immediate tag for an element using contains text in Selenium Java
我必须获取文本可见的标签。但是如果我们对所有包含文本的标签使用 getTagName,那么即使是父元素也会显示相同的文本。
<ul> <li> The Text </li> </ul>
在上述情况下,如果我们使用包含文本来获取标签,那么 ul 和 li 都会被选中。如果我不想在查询中准确提及 li,是否有任何通用方法可以将直接标记作为 li 用于 The Text。
提前致谢。
好的,我想如果你能在DOM中找到一个元素uniquely
,那么你也可以获取标签名称。
元素必须是唯一的,例如 1/1 在节点中匹配。
我建议使用 xpath,如下所示:-
//ul//li[contains(text(), 'The Text')]
或
//li[contains(text(), 'The Text')]
如果它们碰巧多次出现,则应用 xpath 索引:-
(//ul//li[contains(text(), 'The Text')])[1]
或
(//li[contains(text(), 'The Text')])[1]
在代码中你可以像这样使用它:
print(driver.find_element_by_xpath((//ul//li[contains(text(), 'The Text')])[1]).tag_name)
现在,在HTML节点中找到1/1匹配节点是一个技巧,你可以分享更多HTML内容,我可以寻找更有建设性的xpath。
在您的情况下,您需要找到一个没有子元素但包含该文本的元素。
这个的 XPath 定位器将是:
//*[not(child::*) and text()='your text']
所以命令将是
String tag = driver.findElement(By.xpath("//*[not(child::*) and text()='your text']")).getTagName();
我必须获取文本可见的标签。但是如果我们对所有包含文本的标签使用 getTagName,那么即使是父元素也会显示相同的文本。
<ul> <li> The Text </li> </ul>
在上述情况下,如果我们使用包含文本来获取标签,那么 ul 和 li 都会被选中。如果我不想在查询中准确提及 li,是否有任何通用方法可以将直接标记作为 li 用于 The Text。
提前致谢。
好的,我想如果你能在DOM中找到一个元素uniquely
,那么你也可以获取标签名称。
元素必须是唯一的,例如 1/1 在节点中匹配。
我建议使用 xpath,如下所示:-
//ul//li[contains(text(), 'The Text')]
或
//li[contains(text(), 'The Text')]
如果它们碰巧多次出现,则应用 xpath 索引:-
(//ul//li[contains(text(), 'The Text')])[1]
或
(//li[contains(text(), 'The Text')])[1]
在代码中你可以像这样使用它:
print(driver.find_element_by_xpath((//ul//li[contains(text(), 'The Text')])[1]).tag_name)
现在,在HTML节点中找到1/1匹配节点是一个技巧,你可以分享更多HTML内容,我可以寻找更有建设性的xpath。
在您的情况下,您需要找到一个没有子元素但包含该文本的元素。
这个的 XPath 定位器将是:
//*[not(child::*) and text()='your text']
所以命令将是
String tag = driver.findElement(By.xpath("//*[not(child::*) and text()='your text']")).getTagName();