我无法在Selenium中使用类垃圾邮件选择链接

时间:2014-10-14 14:38:30

标签: java selenium selenium-webdriver

我在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的新世界,所以我向你求助。

4 个答案:

答案 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"))

阅读documentation

答案 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