在div下定位元素

时间:2015-08-19 12:21:27

标签: css class selenium xpath element

 <div class="form-item">
   <label class="form-item-label">Mailing Account:</label>
   <div class="form-element">
     <div class="form-field-wrap>
       <input class="form-text x-form-field x-combo-noedit">
       </input>

我正在尝试找到<input class="form-text x-form-field x-combo-noedit">下的元素<label class="form-item-label">Mailing Account:</label>

第一个元素应该匹配在文本&#34;邮件帐户:&#34;以及任何这些类的第二个元素&#34; form-text x-form-field x-combo-noedit&#34;。

有人可以使用xpathcssSelector建议使用逻辑吗?

1 个答案:

答案 0 :(得分:0)

让我看看我是否理解正确,你想找到包含类&#39; form-text&#39;的元素。 &#39; X型场&#39;和&#39; x-combo-noedit&#39;,只有当包含的div是带有文本&#34;邮件帐号&#34;

的标签的兄弟姐妹时

使用xpath执行此操作的方法:

WebElement firstElement = driver.findElement(By.xpath("//label[contains(text(), 'Mailing Account:')]"));
WebElement secondElement = firstElement.findElement(By.xpath("./following-sibling::div[1]//input[@class='form-text x-form-field x-combo-noedit']"));

如果你想要匹配任何一个类,那么就像你所写的一样,那么&#34;输入&#34;你的第二个xpath的一部分:

//input[contains(@class,'form-text') or contains(@class ,'x-form-field') or contains(@class ,'x-combo-noedit')]

如果要将所有内容组合到一个表达式中,可以使用以下xpath:

String xpath = "//label[contains(text(), 'Mailing Account:')]/following-sibling::div[1]//input[contains(@class,'form-text') or contains(@class ,'x-form-field') or contains(@class ,'x-combo-noedit')]";
// and then just find the element
driver.findElement(By.xpath(xpath));