我在HTML中有以下命令:
**<a id="pt1:cb1" class="xfc p_AFTextOnly" href="#" onclick="return false;">
<span class="x106">Cadastro de cliente</span>**
必须选择&#34; Cadastro de cliente&#34;项目
我使用了以下命令,但它没有用。
WebElement menuCadCliente = driver.findElement(By.xpath("/html/body/div/form/div/div/div/div/div[1]/div[7]/div/div[6]/div/div[1]/div/div[1]/a/span"));
menuCadCliente.click();
我是硒webdriver的新世界,所以我向你求助。
答案 0 :(得分:0)
xpath看起来过于复杂。想想更简单可能有用。您可以按ID搜索,但如果id属性是动态生成的,您可以尝试通过'linkText'进行搜索:
driver.findElement(By.linkText("Cadastro de cliente")).click();
答案 1 :(得分:0)
您正在使用完整的XPath,这几乎总是一个坏主意。从您发布的一小部分代码中可以找到太多解决方案。以下任何一个都可以工作:
driver.findElement(By.className("x106"))
driver.findElement(By.tagName("span"))
driver.findElement(By.linkText("Cadastro de cliente"))
答案 2 :(得分:0)
页面的代码段,并有我需要点击的链接。
<div class="xwq" style="position:absolute;left:0px;right:0px;top:0px;bottom:0px">
<div style="position:absolute;width:100%;height:100%">
<div id="pt1:sdi1" class="af_showDetailItem" style="position:absolute;width:auto;height:auto;top:0px;left:0px;bottom:0px;right:0px">
<div>
<a id="pt1:cb1" class="xfc p_AFTextOnly" href="#" onclick="return false;">
<span class="x106">Cadastro de cliente</span>
</a>
</div>
<div>
<a id="pt1:cb2" class="xfc p_AFTextOnly" href="#" onclick="return false;">
<span class="x106">Relacionar cliente à Proposta de Venda</span>
</a>
</div>
<div>
<a id="pt1:cb3" class="xfc p_AFTextOnly" href="#" onclick="return false;">
<span class="x106">Iniciar processo de Análise de Crédito</span>
</a>
</div>
</div>
</div>
使用了selenium中的命令:
WebElement menuCadCliente = driver.findElement(By.linkText("Cadastro de cliente"));
menuCadCliente.click();
已经确定的是单个类及其内部具有不同的值。如果我不理解erroado,那就是我。
答案 3 :(得分:0)
如果您感兴趣的范围始终是id为“pt1:cb1”的锚标记的子级,那么我建议使用:
WebElement menuCadCliente = driver.findElement(By.cssSelector("#pt1:cb1 .x106"));
否则,如果订单没有保证,我建议使用逻辑循环来找到正确的元素。
List<WebElement> spans = driver.findElements(By.cssSelector(".x106"));
WebElement menuCadCliente;
for (WebElement span : spans) {
if (span.getText().equals("Cadastro de cliente")) {
menuCadCliente = span;
}
}
或者如果你可以尝试使用:contains,它匹配substring。
WebElement menuCadCliente = driver.findElement(By.cssSelector("span:contains('Cadastro de cliente')"));
但是,此方法也会匹配具有文本的跨度,例如Cadastro de clientes1231