Selenium检查if属性是否包含java中字符串的一部分

时间:2016-09-28 15:22:58

标签: java selenium dom xpath

所以我有一个网页,其中某些元素的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。我怎么能做到这一点?

3 个答案:

答案 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']"));