无法找到Gmail登录页面密码字段的元素

时间:2018-01-04 13:56:46

标签: java selenium webdriver element

我正在尝试使用Selenium编写Gmail登录程序。我可以点击URL,输入用户名,然后点击"下一步"按钮,但当我重定向到"密码"字段页面我无法找到该元素。我使用by.className尝试了相同的操作。以下是字段的检查代码:

<input class="whsOnd zHQkBf" 
       jsname="YPqjbf"  
       autocomplete="current-password"  
       spellcheck="false"  
       tabindex="0"  
       aria-label="Enter your password"  
       name="password"  
       autocapitalize="off"  
       autocorrect="off"  
       dir="ltr"  
       data-initial-dir="ltr"  
       data-initial-value=""  
       badinput="false"  
       type="password">

以下是我写过的硒代码:

driver.findElement(By.className("whsOnd zHQkBf")).sendKeys("Password");

我也尝试使用ID,使用父<div id ="password"....>,但它没有用。

请让我知道解决方案。

7 个答案:

答案 0 :(得分:2)

whsOnd zHQkBf表示该元素有两个CSS类whsOndzHQkB。所以你找不到任何名为whsOnd zHQkBf的类。

您必须使用CSS选择器来查找具有多个类的元素,如下所示:.whsOnd.zHQkBf。但这与谷歌登录页面上的多个元素相匹配。使用以下CSS选择器input[type='password']更容易。

答案 1 :(得分:1)

使用以下代码

driver.findElement(By.cssSelector("[name=\"password\"]")).sendKeys("Password");

答案 2 :(得分:1)

请使用以下代码

 driver.findElement(By.cssSelector("input[type='password']")).sendKeys("Password");

答案 3 :(得分:1)

name定位器最简单:

driver.findElement(By.name("password")).sendKeys("Password");

答案 4 :(得分:1)

这可能会对您有所帮助:

driver.findElement(By.xpath(".//*[@id='password']//input[@name='password']")).sendKeys("Password");

答案 5 :(得分:0)

driver.findElement(By.className(&#34; whsOnd zHQkBf&#34;))。sendKeys(&#34; Password&#34;);

嗨,哥们,

您编写的语句是错误的类名,因为它是一个复合类,我们不能使用复合类来定位元素。用户名和密码字段是使用angular-JS开发的,因此当点击登录URL时,将下载用户名和密码,但是仅显示用户的用户名,因此密码是隐藏的背景

尝试此代码,这肯定会起作用,因为我已经尝试过了

driver.findElement(By.xpath(&#34; // [@ ID =&#39;密码&#39;] /子:: [1] /子:: /子:: /子:: *&#34))的SendKeys(&#34;密码&#34);

希望你得到答案 快乐测试

答案 6 :(得分:0)

以下代码对我有用。某些时间元素将不可单击,因此使驱动程序等待某些可预期的事件(如可单击)发生。

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[type=password));
driver.findElement(By.cssSelector("input[type=password]")).sendKeys("your password");