wake-up-neo.com

element kann in Chrome und Edge nicht mit Java/Selen fokussiert werden

Beim Ausführen meines Tests in Chrome und Edge in FF wird ein Elementfehler angezeigt. Ich habe versucht, Auflösungen zu probieren, aber ohne Erfolg. Ich bin nicht sicher, was ich dagegen tun soll. Es kann helfen, dass jemand da draußen hilft. Danke im Voraus.

driver.findElement(By.linkText("Add")).click();
List <WebElement> groups = new Select(driver.findElement(By.xpath("/html/body/div[1]/section/div/article/form/fieldset/div[3]/div[2]/div/div/div[1]/select"))).getOptions();
groups.get(3).click();
JavascriptExecutor js = (JavascriptExecutor)driver;
WebElement groupRole = driver.findElement(By.xpath("/html/body/div[1]/section/div/article/form/fieldset/div[3]/div[2]/div/div/div[2]/label[2]"));
js.executeScript("arguments[0].click();", groupRole);
driver.findElement(By.xpath("/html/body/div[1]/section/div/article/form/fieldset/div[3]/div[2]/div/div/div[2]/label[2]")).sendKeys(" ");
// Check to see if the user should be made active and set active checkbox to on if value in file is "active"
if (activeFlag.equals("active"))
{
    driver.findElement(By.xpath("/html/body/div[1]/section/div/article/form/fieldset/div[3]/div[1]/div[1]/div/div/input")).sendKeys(" ");
} 
// If the user role is to be admin then set the Site role to Administrator
if (userLevel.equals("admin"))
{
    List <WebElement> roles = new Select(driver.findElement(By.name("community_role"))).getOptions();
    roles.get(1).click();
}

Hier ist der Stack-Trace:

 Exception in thread "main" org.openqa.Selenium.WebDriverException: unknown error: cannot focus element
      (Session info: chrome=47.0.2526.106)
      (Driver info: chromedriver=2.20.353145 (343b531d31eeb933ec778dbcf7081628a1396067),platform=Windows NT 10.0 x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 81 milliseconds
    Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'
    System info: Host: 'Janet-PC', ip: '192.168.56.1', os.name: 'Windows 8.1', os.Arch: 'x86', os.version: '6.3', Java.version: '1.7.0_80-ea'
    Session ID: 0a9dbd54a81a42a4178b25b95bb14f63
    Driver info: org.openqa.Selenium.chrome.ChromeDriver
    Capabilities [{platform=WIN8_1, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=C:\Users\Janet\AppData\Local\Temp\scoped_dir7508_15608}, rotatable=false, locationContextEnabled=true, mobileEmulationEnabled=false, version=47.0.2526.106, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, webStorageEnabled=true, nativeEvents=true, hasTouchScreen=false, applicationCacheEnabled=false, takesScreenshot=true}]
        at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at Java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:206)
        at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:158)
        at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:647)
        at org.openqa.Selenium.remote.RemoteWebElement.execute(RemoteWebElement.Java:326)
        at org.openqa.Selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.Java:121)
        at Viddler_create_user.createUser.test(createUser.Java:244)
        at Viddler_create_user.createUser.setUpBeforeClass(createUser.Java:126)
        at Viddler_create_user.createUser.main(createUser.Java:64)

Hier ist eine weitere Stapelverfolgung. Ich erhalte die Fehlermeldung, wenn ich versuche, auf die Schaltfläche "Senden" zu klicken, nicht auf die aktive Flagge. Ich hatte bereits die Handlungsschritte ausgeführt, die ich auch anbieten werde.

Exception in thread "main" org.openqa.Selenium.WebDriverException: unknown error: cannot focus element
  (Session info: chrome=47.0.2526.106)
  (Driver info: chromedriver=2.20.353145 (343b531d31eeb933ec778dbcf7081628a1396067),platform=Windows NT 10.0 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 52 milliseconds
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'
System info: Host: 'Janet-PC', ip: '192.168.56.1', os.name: 'Windows 8.1', os.Arch: 'x86', os.version: '6.3', Java.version: '1.7.0_80-ea'
Session ID: f332b496aa54d581c764f7328e770e65
Driver info: org.openqa.Selenium.chrome.ChromeDriver
Capabilities [{platform=WIN8_1, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=C:\Users\Janet\AppData\Local\Temp\scoped_dir2072_18936}, rotatable=false, locationContextEnabled=true, mobileEmulationEnabled=false, version=47.0.2526.106, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, webStorageEnabled=true, nativeEvents=true, hasTouchScreen=false, applicationCacheEnabled=false, takesScreenshot=true}]
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at Java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:206)
    at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:158)
    at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:647)
    at org.openqa.Selenium.remote.RemoteWebElement.execute(RemoteWebElement.Java:326)
    at org.openqa.Selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.Java:121)
    at Viddler_create_user.createUser.test(createUser.Java:244)
    at Viddler_create_user.createUser.setUpBeforeClass(createUser.Java:126)
    at Viddler_create_user.createUser.main(createUser.Java:64)

Code:

        Actions actions = new Actions(driver);
        actions.moveToElement(driver.findElement(By.xpath("/html/body/div[1]/section/div/article/form/input[2]")));
        actions.click();
//      actions.sendKeys(" ");
        actions.build().perform();
12
Janet

die Methode sendkeys ist das Problem gemäß der Stack-Ablaufverfolgung.

at org.openqa.Selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.Java:121)

Versuchen Sie es mit der Klasse Actions, um sich zuerst auf das Element zu konzentrieren und dann die erforderlichen Schlüssel zu senden.

Actions actions = new Actions(driver);
actions.moveToElement(element);
actions.click();
actions.sendKeys("SOME DATA");
actions.build().perform();
43
parishodak

Die Action-Resolution hat doch funktioniert. Ich hatte anscheinend eine zusätzliche driver.findElementBy-Zeile, die auskommentiert werden sollte, da es sich um ein Duplikat handelt, das ich an einen anderen Ort verschoben hatte.

Danke für Ihre Hilfe!!

2
Janet

Wenn andere Benutzer auf dieses Problem stoßen, stellen Sie sicher, dass Sie nur ein Element finden! Chrome-Tools können dabei manchmal täuschen. Ich habe meinen Selector in firePath (firefox add-on) noch einmal überprüft und es stellte sich heraus, dass ich zwei passende Knoten hatte, obwohl Chrome-Tools mir ein Element zeigten. 

https://addons.mozilla.org/en-US/firefox/addon/firepath/

2
Valkyrie

Ich habe beim Lesen des Codes "Aktionsklasse" einen sehr wichtigen Code gefunden.

"Aktionsklasse" Funktioniert wegen 

actions.click()  

?!

.

Versuchen Sie es einfach mal

element.click()

vor 

element.sendKeys()

in Ihrem vorhandenen Code.

click () -Methode macht das Element fokussiert !! ~~ THX für jeden Senior

0
소경현

Dies ist eine bearbeitete Version der richtigen Antwort, da ich diesen Code nicht einfach kopieren und einfügen konnte. Mit dem folgenden Code können Sie es kopieren (wenn das Element als ID gefunden wird):

elem = driver.find_element_by_id("WHATEVER THE ELEMENT ID IS HERE")
actions = ActionChains(driver)
actions.move_to_element(elem)
actions.click()
actions.send_keys("PUT YOUR TEXT IN HERE")
actions.perform()
0
Romano

Möglicherweise entspricht das von Ihnen festgelegte Xpath nicht dieser Elementebene. Z.B. Wenn ein Textfeld Div\div\textarea durchläuft, nehmen Sie höchstwahrscheinlich nur an Div\ teil. Ich hatte das gleiche Problem und es wurde behoben, nachdem xpath bis zum Knoten textarea geschrieben wurde.

0
Hemant Madan

Die gewählte Antwort hat für mich nur teilweise funktioniert. Beim Hinzufügen 

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(element));
element.clear();

bevor die vorgeschlagene Antwort verwendet wurde, hat sie vollständig funktioniert!

0
Alex