2014-01-14 4 views
14

Meine Javascript Linie:Element nach jquery.show und WebDriverException: unbekannter Fehler: kann nicht Element des Fokus

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

Meine WebDriver Codezeile:

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

Wenn ich den Test ausführen es löst die folgende Ausnahme aus:

WebDriverException: unknown error: cannot focus element 

Also habe ich nach einer Lösung gesucht. Es gibt einige Probleme, die in Chrome Google Code-Site gemeldet werden. Es gibt viele Vorschläge zur Verwendung von JavaScriptExecutor. Aber es scheint keine bessere Lösung für mich zu sein, weil es einen Browser abhängigen Code machen könnte.

Antwort

26

Nach einigen Stunden fand ich endlich eine Lösung von Aktionen ohne JavascriptExecuter mit:

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

Nun, es für mich gearbeitet. Ist dies jedoch die bessere Lösung?

+0

Dies funktionierte auch für mich, mit einem ähnlichen Problem. –

7

Auf den ähnlichen Linien, wenn Sie Winkelmesser (AngularJS) verwenden, können Sie es auf diese Weise verwenden `

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

Ein bisschen spät, um die Partei, sondern die Suche nach einer Lösung für dieses Problem suchen, während Selen mit unter python kann den folgenden Code verwenden:

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

Wo my_div ein Element ist, dass Sie vorher ausgewählt haben, vielleicht mit Code wie folgt:

my_div = item.find_element_by_css_selector("div.foobar") 
+1

nur um zu klären, diese Antwort funktionierte für mich in Python 3.5, ich denke, die akzeptierte Lösung ist in Java –

Verwandte Themen