2016-12-07 11 views
1

私のプロフィールにログインしようとしていますが、パスワードを追加しようとすると問題が発生します。パスワードボックスにカーソルが表示されますが、キーを送信しようとすると例外がスローされます。これには何らかのセキュリティ上の理由がありますか?自動化が行われないように、パスワードはhtml/xml内に隠されていますか? 1は次のように動作している - 2パスワード入力があり、セレンがテキストをパスワードフィールドに送信

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

    } 

} 

HTMLはとても

<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;"> 

のようなもので、エラーが

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

答えて

2

このログインフォームは少しトリッキーです実際のパスワードフィールドには「ヒント」が表示されます。あなたがする必要があるのは、最初に "ヒント"をクリックしてから、実際のパスワード入力にキーを送信することです:

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

素晴らしいです。なぜそれがこのようなものなのか知っていますか?これはセキュリティ上の目的ですか? –

+1

@ scarecrow-ええ、ウェブを掻くボットの簡単な対策に似ています。 – alecxe

関連する問題