连续元素的CSS或XPath选择器

时间:2018-07-25 05:46:20

标签: html css xpath

是否有用于连续元素的CSS或XPath选择器?我想测试一些HTML,以确保<h1><h6>标签的顺序。我想确保没有缺少的标题。例如,这将是有效的

<h1>Header1</h1>
<h2>Header2</h2>
<h3>Header3</h3>

但这将是无效的

<h1>Header1</h1>
<h3>Header3</h3>
<h4>Header4</h4>

因为缺少<h2>标签。

问题是,我也想将此HTML ALS视为有效,但没有找到可以选择<h2>标签的选择器:

<h1>Header1</h1>
<div>
  <h2>Header2</h2>
</div>
<h3>Header3</h3>

我与兄弟姐妹h1~h2~h3尝试过,但这在嵌套情况下不起作用。我尝试了相邻的选择器h1+h2+h3,但这也不起作用。似乎只有子选择器,并且东西在同一父级上运行。我也尝试使用XPath解决此问题,但似乎存在与CSS类似的局限性。

那么在CSS或XPath中是否存在“元素在代码中某个元素之后的另一个元素”类型的选择器?

1 个答案:

答案 0 :(得分:2)

在XPath中,您可以使用<p id="test">test data</p> <script> $("#test").on("click", function(){ var Clickvalue = $(this).text(); $("input").val(Clickvalue); }); </script> 轴来选择以下可能不是同级节点:

 //to get all rows in table
    List<WebElement> rows=driver.findElements(By.xpath("//table[@id='cust-found-table']/tbody/tr"));

    for (int i = 0; i < rows.size(); i++) {

        //check text in first cell of each row
        if(rows.get(i).findElement(By.xpath("td[1]")).getText().equals("requiredCustIdHere")) {
            //click on third cell of required row
            rows.get(i).findElement(By.xpath("td/button")).click();
            break;
        }
    }