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

Моя строка javascript:

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

Моя строка кода webdriver:

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

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

WebDriverException: unknown error: cannot focus element

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


person Eduardo Fabricio    schedule 14.01.2014    source источник


Ответы (3)


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

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

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

person Eduardo Fabricio    schedule 14.01.2014

Немного поздно для вечеринки, но те, кто ищет решение этой проблемы при использовании селена под 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")
person Daniel Porteous    schedule 29.08.2016
comment
просто чтобы уточнить, этот ответ работал у меня в Python 3.5, я думаю, что принятое решение находится на Java - person Kevin Zhao; 07.01.2017

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

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