所以我有一个网页,其中某些元素的Id是动态生成的,某些部分会发生变化,某些部分会保持不变,如下所示:
<div id= "xxxdiv" title= 'this title'>
<p id = "xxxp">
<table id = "xxxtable" title = 'not derp'>
<div id = "yyyydiv">
<table id = "yyytable" title= 'derp'>
<table id = "yyytable2" title = 'not derp'>
<table id = "zzztable" title = derp>
我正在尝试在页面上执行一些动态查找,这些查找可以查找id包含已知值的给定元素。例如,我并不总是知道可能存在多少嵌套元素,因此最终生成的数字可能会有所不同。所以我想通过xpath找到一个元素,其中@title = not derp而@id包含yyy。我怎么能做到这一点?
答案 0 :(得分:3)
driver.findElement(By.xpath("//table[@title='not derp' and contains(@id, 'yyy')]"));
会找到符合您的搜索条件的第一个元素,该元素将是您的HTML代码段的<table id = "yyytable2" title = 'not derp'>
。
答案 1 :(得分:1)
您可以使用大量关系和逻辑运算符。在这种情况下,假设您正在查找表格元素,您可以使用://table[@title='not derp' and contains(@id,'yyyy')]
答案 2 :(得分:1)
我想通过xpath找到一个元素,其中@title = not derp而@id包含yyy
我建议您使用cssSelector
,因为使用By.cssSelector()
定位元素比性能By.xpath()
要快得多。所以你应该尝试如下: -
driver.findElement(By.cssSelector("table[id *= 'yyy'][title = 'not derp']"));