web-dev-qa-db-ja.com

jquery.showおよびWebDriverExceptionの後の要素:不明なエラー:要素にフォーカスできません

javascript行:

$('#name').show();

私のwebdriverコード行:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("name"))).sendKeys("Some Name");

テストを実行すると、次の例外がスローされます。

WebDriverException: unknown error: cannot focus element

だから、私は解決策を探してきました。 ChromiumのGoogleコードサイトで報告されている問題がいくつかあります。 JavaScriptExecutorの使用に関しては多くの提案があります。しかし、ブラウザーに依存するコードを作成する可能性があるため、私にとってそれはより良いソリューションとは思えません。

15

数時間後、私はようやくJavascriptExecuterなしのアクションを使用して解決策を見つけました:

Actions actions = new Actions(driver);
actions.moveToElement(website);
actions.click();
actions.sendKeys("Some Name");
actions.build().perform();

まあ、それは私のために働いた。しかし、この方法がより良い解決策ですか?

26

パーティーには少し遅れますが、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")
12
Daniel Porteous

同様の行で、分度器(angularjs)を使用している場合は、このように使用できます `

actions = protractor.getInstance().actions();
actions.mouseMove(element);
actions.click();
actions.sendKeys("Some text");
actions.perform();`
7
Raghu K Nair