2017-04-21 4 views
1

私はPCA Predict APIから生成された要素を見つけようとしています。このリンクにあります。 http://www.pcapredict.com/en-gb/address-capture-software/実行時にHTMLで生成されるfindElement

現時点でのコードは次のとおりですが、要素が見つからないためタイムアウト例外がスローされます。しかし、私が開発者用ツールでチェックしたので、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

最初の項目は、それのクラス値は以下に等しいにつながる、デフォルトでは「選択」なっていることのように見えます:

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

他のすべての次の結果のみpcaitemクラスを持っていますが、どれもpcaitem pcafirstitemを持っていませんクラス値。

つまり、問題は厳密なクラスの一致です。私は、class属性に部分一致を持たせるためにロケータを改善します。例えば、CSSセレクタ有する:

+0

wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".pcaitem.pcafirstitem"))); 
ブリリアント、単純な修正も。とても有難い! –

関連する問題