2016-11-04 57 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"); 
相关问题