私は自動テストを書いていますが、バグが発生した場合は、GitHubのリポジトリに直接報告したいと思います。私のプログラムで失敗するステップは、GitHub Issue TrackerのSubmit new issueボタンです。
コードは次のとおりです。
WebElement sendIssue = driver.findElement(By.xpath("/html/body/div[5]/div/div/div[2]/div[1]/div/form/div[2]/div[1]/div/div/div[3]/button"));
sendIssue.click();
そして例外:
org.openqa.Selenium.WebDriverException:要素はポイント(883、547.7999877929688)でクリックできません。他の要素はクリックを受け取ります:divclass = "modal-backdrop">
次のコマンドも機能しません:
((JavascriptExecutor) driver).executeScript("arguments[0].click();", sendIssue);
クリック可能にするにはどうすればよいですか?この問題を解決する他の方法はありますか?
これは、Seleniumがクリックしようとしているときに、目的の要素がクリックできないために発生しています。
提供されたXpathが完全に正しいことを確認する必要があります。Xpathについて確信がある場合は、次のことを試してください。
交換
WebElement sendIssue = driver.findElement(By.xpath("/html/body/div[5]/div/div/div[2]/div[1]/div/form/div[2]/div[1]/div/div/div[3]/button"));
sendIssue.click();
と
WebElement sendIssue =(WebElement)new WebDriverWait(DRIVER,10).until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[5]/div/div/div[2]/div[1]/div/form/div[2]/div[1]/div/div/div[3]/button")));
sendIssue.click();
それが機能しない場合は、タイムアウト例外が発生します。その場合は、タイムアウト量を10から20に変更してみてください。
それでも機能しない場合は、HTMLのスクリーンショットを投稿してください。
問題をクリックできるようにするには、問題のタイトルと説明に何かを書く必要があります。便宜上、スクリーンショットを追加している場所に何も書かずにボタンをクリックするという間違いを犯していないことを確認してください。
以前のバージョン(v2.48)で導入されたSelenium Webdriverは、他の何か(たとえば、固定ヘッダーまたはフッター)でオーバーラップしている可能性がある要素、またはビューポート(Webページの表示領域)にない可能性がある要素のクリックを防ぐ新しい動作です。ブラウザウィンドウ内)。あなたは議論を見ることができます ここ 。
これを解決するには、クリックしようとしている要素までスクロール(上または下)する必要があります。
1つのアプローチは、次のようなものになります。
Javaを使用したSelenium WebDriver(Selenium 2)でページを上下にスクロール
Githubで問題を作成する別の、おそらくより合理的な方法は、APIを使用することです。たぶんチェックアウトしたほうがいいでしょう!
運がいい。