私javascript行:
$('#name').show();
私のwebdriverコード行:
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("name"))).sendKeys("Some Name");
テストを実行すると、次の例外がスローされます。
WebDriverException: unknown error: cannot focus element
だから、私は解決策を探してきました。 ChromiumのGoogleコードサイトで報告されている問題がいくつかあります。 JavaScriptExecutor
の使用に関しては多くの提案があります。しかし、ブラウザーに依存するコードを作成する可能性があるため、私にとってそれはより良いソリューションとは思えません。
数時間後、私はようやくJavascriptExecuterなしのアクションを使用して解決策を見つけました:
Actions actions = new Actions(driver);
actions.moveToElement(website);
actions.click();
actions.sendKeys("Some Name");
actions.build().perform();
まあ、それは私のために働いた。しかし、この方法がより良い解決策ですか?
パーティーには少し遅れますが、pythonでSeleniumを使用しているときにこの問題の解決策を探している人は、次のコードを使用できます。
actions = webdriver.ActionChains(driver)
actions.move_to_element(my_div)
actions.click()
actions.send_keys("Some name") # Replace with whichever keys you want.
actions.perform()
どこ my_div
は、おそらく次のようなコードで、以前に選択した要素です。
my_div = item.find_element_by_css_selector("div.foobar")
同様の行で、分度器(angularjs)を使用している場合は、このように使用できます `
actions = protractor.getInstance().actions();
actions.mouseMove(element);
actions.click();
actions.sendKeys("Some text");
actions.perform();`