<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;。
有人可以使用xpath
或cssSelector
建议使用逻辑吗?
答案 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));