私は、WebアプリケーションのUIのクリックを自動化するためにSeleniumを使用しています。ページの1つにいくつかのボタンがあり、いくつかの詳細があります。彼らはすべて同じ名前ですが、いずれかをクリックすると大丈夫ですので、最初のものをクリックしています。しかし、時にはうまくいくこともありますが、しばしばうまくいきませんJAVA/Selenium - ページの最初のボタンをクリックすると、時間の50%が有効になります
WebElement DetailsButton = setPresentElementByXpath("//input[1][@type='button' and @value='Go to Details']");
DetailsButton.click();
私は要素を動的に待つためにsetPresentElementByXpathを使用しています。
private WebElement setPresentElementByXpath(String xpath) throws Exception {
WebElement myDynamicElement = (new WebDriverWait(driver, 15))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpath)));
return myDynamicElement;
}
私は間違っていますか?
編集:私はそれが失敗する箇所を言及するのを忘れました。それは問題なしでDetailsButton.click();
を通過しますが、次のものをクリックすると失敗します。スクリーンショットとログには、ボタンをクリックした後に表示されるはずのページがなかったため、ボタンがクリックされていないと仮定しています。
存在の代わりに 'ExpectedConditions.visibilityOfElement(WebElement要素)'を使ってみましたか?ページに表示される前にボタンをクリックしようとしている可能性がありますが、DOMには存在しています。 また、なぜXPathを使用していますか? XPathは非常に脆弱であり、私が確信している不快感を助けていません。可能であればCSSセレクタを使用してください。 – jaredgilmore
visibilityOfElementで同じことが起こります。通常はIDを使用していますが、ケースでは私ができることは何でも使用できません。通常はxpath、習慣の力です。 – tom
アクションクラスまたはJavaScriptエグゼキュータを使用するような他の方法で試してください – Murthi