2016-12-07 3 views
1

Ich versuche mich in meinem Profil anzumelden, bekomme aber ein Problem, wenn ich versuche, das Passwort hinzuzufügen. Ich kann den Cursor in der Passwortbox erscheinen lassen, aber wenn ich versuche, die Schlüssel zu senden, wird eine Ausnahme ausgelöst. Gibt es dafür einen Sicherheitsgrund? Ist das Passwort in der HTML/XML-Datei versteckt, damit keine Automatisierung stattfindet?Selen sendet Text an das Passwortfeld

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 

public class mainTester { 

static WebDriver driver; 

public static void main(String[] args) throws InterruptedException{ 

    setUp(); 
} 
public static void setUp() throws InterruptedException { 
     // Optional, if not specified, WebDriver will search your path for chromedriver. 
     System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); 

     driver = new ChromeDriver(); 
     driver.get("http://www.google.com/xhtml"); 
    // Thread.sleep(5000); // Let the user actually see something! 
     WebElement searchBox = driver.findElement(By.name("q")); 
     searchBox.sendKeys("C programming forum"); 
     searchBox.submit(); 
     Thread.sleep(5000); 
     driver.findElement(By.linkText("C Board - Cprogramming.com")).click(); 
     Thread.sleep(5000); // Let the user actually see something! 
     WebElement userEnter = driver.findElement(By.name("vb_login_username")); 
     userEnter.sendKeys("myusername"); 
     WebElement userEnter2 = driver.findElement(By.name("vb_login_password_hint")); 
     userEnter2.sendKeys("mypassword"); 
    // searchBox.submit(); 
     Thread.sleep(5000); // Let the user actually see something! 
     System.out.println("Finished"); 
     //driver.quit(); 

    } 

} 

die html ist wie so

<input type="text" class="textbox default-value" tabindex="102" name="vb_login_password_hint" id="navbar_password_hint" size="10" value="Password" style="display: inline;"> 

und der Fehler ist

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot focus element 

Antwort

2

Das Login-Formular ein bisschen schwierig ist, gibt es zwei Passworteingaben - ein benimmt sich wie Ein "Hinweis" wird über dem tatsächlichen Passwortfeld angezeigt. Was Sie tun müssen, ist die „Hinweis“ zuerst klicken und dann die Schlüssel zum echten Passworteingabe senden:

WebElement passwordHint = driver.findElement(By.name("vb_login_password_hint")); 
passwordHint.click(); 

WebElement passwordInput = driver.findElement(By.name("vb_login_password")); 
passwordInput.sendKeys("mypassword"); 
+0

fantastisch, das funktionierte. Weißt du warum es so ist? Ist das für Sicherheitszwecke? –

+1

@ Vogelscheuche- ja, sieht aus wie eine einfache Gegenmaßnahme zu Web-Scraping-Bots. – alecxe

Verwandte Themen