element nicht interactable Ausnahme in selenium web-Automatisierung
In dem code unten kann ich nicht senden, Kennwort Schlüssel in das Passwort-Feld, ich habe versucht, auf das Feld, Lichtung, Feld und senden Sie die Tasten. Aber jetzt Arbeit in einem der Methode. Es funktioniert jedoch wenn ich die debug-und test -
public class TestMail {
protected static WebDriver driver;
protected static String result;
@BeforeClass
public static void setup() {
System.setProperty("webdriver.gecko.driver","D:\\geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}
@Test
void Testcase1() {
driver.get("http://mail.google.com");
WebElement loginfield = driver.findElement(By.name("Email"));
if(loginfield.isDisplayed()){
loginfield.sendKeys("[email protected]");
}
else{
WebElement newloginfield = driver.findElemnt(By.cssSelector("#identifierId"));
newloginfield.sendKeys("[email protected]");
//System.out.println("This is new login");
}
driver.findElement(By.name("signIn")).click();
//driver.findElement(By.cssSelector(".RveJvd")).click();
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
//WebElement pwd = driver.findElement(By.name("Passwd"));
WebElement pwd = driver.findElement(By.cssSelector("#Passwd"));
pwd.click();
pwd.clear();
//pwd.sendKeys("123");
if(pwd.isEnabled()){
pwd.sendKeys("123");
}
else{
System.out.println("Not Enabled");
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, eine implizite Wartezeit von vielleicht 10 Sekunden.
Oder explizit warten. Eine explizite wartet, ist der code, den Sie definieren, zu warten, bis eine bestimmte Bedingung Eintritt, bevor Sie fortfahren weiter im code. In Ihrem Fall ist es die Sichtbarkeit der Passwort-Eingabe-Feld. (Dank an ainlolcat Kommentar)
Erklärung: Der Grund, warum Selen nicht finden können, das element ist, weil die id des Passwort-Eingabe-Feld ist zunächst Passwd-verborgen. Nachdem Sie klicken Sie auf die Schaltfläche "Weiter", Google überprüft zuerst, ob die E-Mail-Adresse eingegeben und dann zeigt der Passwort-Eingabe-Feld (durch ändern der id von Passwd verborgene Passwd). Also, wenn das Passwort-Feld ist noch verborgen (D. H. Google ist immer noch die überprüfung der E-Mail-id), Ihr webdriver beginnt mit der Suche nach der Passwort-Eingabe-Feld mit der id, Passwd, die noch verborgen ist. Und damit, wird eine Ausnahme geworfen.
Bitte versuchen Sie, das Passwort-Feld wie dieses.