Элемент после 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();`