如何在HTML中检查一个元素是否存在于另一个元素旁边

时间:2017-10-12 13:02:18

标签: html selenium xpath

假设我想检查HTML中使用XPATH的标签旁边是否存在复选框,我该怎么做呢?

例如:

$all_rows = array();
$header = fgetcsv($file);
while ($row = fgetcsv($file)) {
    $all_rows[] = array_combine($header, $row);
}

我知道我可以使用<div> <input type="checkbox" /> <label>This Is A Test</label> </div> 来获取标签,我想我可以使用"//label[.='This Is A Test']"查看该复选框是否存在,但是(使用Selenium)我收到错误信息不存在。

3 个答案:

答案 0 :(得分:1)

official docs

 [axisname::nodetest[predicate]]

  @* selects all the attributes of the context node
    .. selects the parent of the context node

XML模板:

<div>
  <input type="checkbox" />

  <label>This Is A Test</label>

  <input type="checkbox1" />
</div>

以下XPath可以帮助您XPath Axes

//label[.='This Is A Test']/../input[@type="checkbox"]
//label[.='This Is A Test']/parent::*/input[@type="checkbox"]
//label[.='This Is A Test']/ancestor::div/input[@type="checkbox"]

False «
//label[.='This Is A Test']/../input[@type="check"] = //input[@type="checkbox"]

True «
//label[.='This Is A Test']/../input[@type="checkbox"] = //input[@type="checkbox"]

//label[.='This Is A Test']/following::input[@type="checkbox1"]  = //input[@type="checkbox1"]

//label[.='This Is A Test']/preceding::input[@type="checkbox"]  = //input[@type="checkbox"]

答案 1 :(得分:0)

复选框不是标签的父级。根据你的x路径,它检查父母不是兄弟。

选中复选框旁边的标签。您可以尝试以下x路径。

//input[@type='checkbox']/following-sibling:label[.='This Is A Test']

//label[.='This Is A Test']/preceding-sibling:input[@type='checkbox']

答案 2 :(得分:0)

根据标签名称,获取复选框。

//label[text()='This Is A Test']/preceding-sibling::input[@type='checkbox']

xpath的解释: - 首先,您必须获取复选框标签名称。因此,使用<label>方法使用text()标记开始您的xpath,然后使用preceding-sibling关键字获取<input>标记以及type属性。