2016-11-04 99 views
1

在代碼下面運行時,出現「元素不可見」錯誤。爲什麼Gmail密碼字段無法使用Selenium Webdriver(Java)中的「sendkeys」發送密鑰?

當我通過谷歌和一些調查進行檢查時,發現密碼來與「密碼隱藏」屬性。我如何擺脫這一點。

driver.get("http://www.gmail.com"); 
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); 
try{ 
driver.findElement(By.xpath("//input[@id='Email']")).sendKeys("[email protected]"); 
     driver.findElement(By.xpath("//input[@id='next']")).click(); 
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
driver.findElement(By.xpath("//div[2]/div/div/input[2]")).sendKeys("abcd2123"); 
     driver.findElement(By.xpath("//input[@id='signIn']")).click(); 
    } 
    catch (Throwable e) 
    { 
     System.out.println(e.getMessage()); } 
} 
+0

你可以改變XPath表達式 「// * [@ ID = '的passwd']」? –

+0

編號否運氣添加任何元素查找器。 –

回答

1

嘗試使用如下ID查找元素:

WebElement element1 = driver.findElement(By.id("Passwd")); 
element1.sendKeys("Password"); 

如果失敗,被後接收到異常或錯誤。

WebDriverWait wait = new WebDriverWait(driver, 15); 
WebElement element1 = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Passwd"))); 
element1.sendKeys("Password"); 
+0

與之前一樣的例外 - 「元素不可見」 –

+0

嘗試使用顯式等待。我根據需要修改了答案。 – Abhinav

+0

謝謝Abhinav。明確的等待工作。 –

0

下面顯式等待工作。

WebDriverWait wait = new WebDriverWait(driver,30); 
     WebElement element1 = wait.until(
       ExpectedConditions.elementToBeClickable(By.id("Passwd"))); 
     element1.sendKeys("xxxxxx"); 

類進口是:

進口org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait;

0

我使用webdriver的等待,改變從 '身份證' 到 'XPath的' 設置定位

WebDriverWait wait = new WebDriverWait(driver, 10); 
WebElement MyPass = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='password']/div[1]/div/div[1]/input"))); 
MyPass.sendKeys("Password"); 
相關問題