JavaScript を介してクリックを実行すると、注意が必要な動作がいくつかあります。たとえば、onclick
要素のイベントにバインドされたコードが invokeswindow.alert()
の場合、ブラウザー ドライバーの実装によっては、Selenium コードがハングすることがあります。つまり、JavascriptExecutor
クラスを使用してこれを行うことができます。ただし、私のソリューションは、要素を見つけるために WebDriver メソッドを引き続き使用できるという点で、他の提案とは異なります。
// Assume driver is a valid WebDriver instance that
// has been properly instantiated elsewhere.
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
また、インターフェイスのclick()
メソッドを使用した方がよい場合もありますが、ドライバーをインスタンス化する前にネイティブ イベントを無効にすることにも注意してください。これにより、同じ目標が達成されますが (潜在的な制限は同じですが)、独自の JavaScript を作成して保守する必要はありません。WebElement