[FIXED] Kann keine Schlüssel in “Chrome://” wie Seiten senden – Selenium Java

Ausgabe

Ich hoffe, es geht Ihnen gut, ich versuche, meinen Profilnamen in Chrome mit Selenium zu ändern, aber es scheint, dass ich nicht auf das Eingabeelement zugreifen kann, jedes Mal, wenn ich mit dieser Ausnahme konfrontiert werde: no such element: Unable to locate element: {"method": "CSS selector", "selector":"#input"}. Ich habe jeden Selektor von XPath, Javascript-Pfad und CSS-Selektor bis hin zu teilweisem Linktext ausprobiert. Was ein wenig zu funktionieren schien, war das Senden driver.findElement(By.xpath("//body")).sendKeys(Keys.TAB);, aber das hängt von der tatsächlichen Position ab. Kennt jemand eine Lösung oder Alternative zu diesem Problem? Das ist mein Java-Code:

import java.lang.reflect.Field;
import java.math.BigInteger;
import java.security.MessageDigest;

import org.apache.commons.lang3.CharSet;
import org.openqa.selenium.By;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutor;
import com.gargoylesoftware.htmlunit.javascript.configuration.JavaScriptConfiguration;

import java.util.*;
import java.util.Map.Entry;

public class TestTest {
    public static void main(String[] args) throws Exception {
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        ChromeDriver driver = new ChromeDriver(options);
        driver.get("chrome://settings/manageProfile");
        JavascriptExecutor js = (JavascriptExecutor) driver;
//      driver.findElement(By.xpath("//body")).sendKeys(Keys.TAB);
//      driver.findElement(By.xpath("//body")).sendKeys(Keys.TAB);
        driver.findElement(By.cssSelector("#inner-input-container")).sendKeys("Ayoub");

//      driver.close();
    }
        
}


Vielen Dank

Lösung

Das Problem ist hier das Schattenwurzelelement. In Selen müssen Sie etwas zusätzliche Arbeit leisten, um Schattenwurzelelemente zu handhaben. Erweitern Sie zuerst die Schattenwurzelelemente und greifen Sie dann auf das Element zu.

public WebElement expandRootElement(WebElement element) {
    WebElement ele = (WebElement) ((JavascriptExecutor)driver)
.executeScript("return arguments[0].shadowRoot", element);
    return ele;
}

https://www.seleniumeasy.com/selenium-tutorials/accessing-shadow-dom-elements-with-webdriver


Beantwortet von –
Rohit Pratap


Antwort geprüft von –
Candace Johnson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like