selenium.focus()
WebDriverに相当するものは何ですか?
element.sendKeys("");
また
new Actions(driver).moveToElement(element).perform();
私はそれらの両方を試してみましたが、それらは機能しましたが、すべての要素で常に機能するのはどれですか?
要素 (ボタン、リンクなど) の正しい方法はどれですか? 関数はさまざまな UI で使用されるため、これは私にとって重要です。
selenium.focus()
WebDriverに相当するものは何ですか?
element.sendKeys("");
また
new Actions(driver).moveToElement(element).perform();
私はそれらの両方を試してみましたが、それらは機能しましたが、すべての要素で常に機能するのはどれですか?
要素 (ボタン、リンクなど) の正しい方法はどれですか? 関数はさまざまな UI で使用されるため、これは私にとって重要です。
次のコード -
element.sendKeys("");
情報を入力するための入力タグボックスを見つけようとしますが、
new Actions(driver).moveToElement(element).perform();
画像要素、リンク要素、ドロップダウン ボックスなどで機能するため、より適切です。
したがって、moveToElement()メソッドを使用すると、Web ページ上の任意の汎用 WebElement に焦点を当てることがより理にかなっています。
入力ボックスの場合、フォーカスする要素でclick()する必要があります。
new Actions(driver).moveToElement(element).click().perform();
リンクと画像の場合、マウスはその特定の要素の上にありますが、やりたいことに応じてクリックすることができます。
入力タグの click() が機能しない場合 -
この関数を汎用にしたいので、最初に webElement が入力タグであるかどうかを確認します -
if("input".equals(element.getTagName()){
element.sendKeys("");
}
else{
new Actions(driver).moveToElement(element).perform();
}
好みに応じて同様の変更を加えることができます。
JSは次のように使用できます。
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("document.getElementById('elementid').focus();");
FWIW、私は関連する問題だと思うものを持っていて、回避策を思いつきました:私は要素にシステム クリップボードの内容。これは 100% 手動で機能しましたが、Selenium で実行した場合、execCommand はほぼ常に false を返しました。
最初の driver.get( myChromeExtensionURL ) の後に driver.refresh() を追加したところ、100% の確率で動作するようになりました。これは、Selenium ドライバー バージョン 2.16.333243 および Mac OS 10.9 の Chrome バージョン 43 で発生しました。
この問題を調査していたとき、この回避策について言及されていなかったので、Selenium/focus/execCommand('paste') の足跡をたどる人のために、私の発見を文書化しようと思いました.
以下のコードを使用して webelement にフォーカスすることもできます。
public focusElement(WebElement element){
String javaScript = "var evObj = document.createEvent('MouseEvents');"
+ "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);"
+ "arguments[0].dispatchEvent(evObj);";
((JavascriptExecutor) getDriver()).executeScript(javaScript, element);
}
それが役に立てば幸い :)