在运行时生成HTML的findElement

时间:2017-04-21 09:53:18

标签: java selenium selenium-webdriver

我试图找到一个从PCA Predict API生成的元素,可在此链接中找到。 http://www.pcapredict.com/en-gb/address-capture-software/

我目前的代码如下所示,但由于找不到任何元素,它会抛出超时异常。然而xpath是正确的,因为我在开发人员工具中检查过它。

    By PCA = By.id("inputPCAnywhere");
    driver.findElement(PCA).clear();
    driver.findElement(PCA).sendKeys(ValidPostcode);
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='pcaitem pcafirstitem']")));
    driver.findElement(By.xpath("//div[@class='pcaitem pcafirstitem']")).click();   

该元素在页面上可见,开发人员工具只返回一个xpath的结果,没有ID可以找到它。

1 个答案:

答案 0 :(得分:1)

看起来默认情况下第一项被“选中”,导致它的类值等于以下内容:

<div class="pcaitem pcafirstitem pcaselected"...>...</div>

所有其他结果只有pcaitem类,但没有pcaitem pcafirstitem类值。

换句话说,你的问题是严格的类匹配。我会改进定位器以使class属性具有部分匹配。例如,使用 CSS选择器

wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".pcaitem.pcafirstitem")));