Элемент после jquery.show и WebDriverException: неизвестная ошибка: не может сфокусировать элемент

Моя строка javascript:

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

Моя строка webdriver:

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

Когда я запускаю тест, он выдает следующее исключение:

WebDriverException: unknown error: cannot focus element

Итак, я искал решение. Есть некоторые проблемы, о которых сообщается в хромовом сайте google code. Существует много предложений по использованию JavaScriptExecutor. Но для меня это не лучшее решение, потому что это может сделать код, зависящий от браузера.

Ответы

Ответ 1

Через несколько часов я наконец нашел решение, используя Actions без JavascriptExecuter:

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

Хорошо, это сработало для меня. Однако, так ли это лучшее решение?

Ответ 2

Немного поздно для вечеринки, но те, кто ищет решение этой проблемы при использовании selenium под python, могут использовать следующий код:

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")

Ответ 3

В аналогичных строках, если вы используете транспортир (angularjs), вы можете использовать его таким образом `

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