无法访问chrome中的登录容器元素

时间:2016-02-04 07:19:32

标签: selenium selenium-webdriver

我正在使用 PAYTM 网站,然后点击登录按钮,然后打开登录容器。我试图输入用户名和密码但无法继续,因为我无法访问元素。我尝试过窗口处理程序,但它返回主窗口和容器窗口的相同窗口ID。

网站: - https://paytm.com/

我使用下面的代码: -

driver.get("paytm.com");
String mainwindow = driver.getWindowHandle();
driver.findElement(By.xpath("//a[@class='login']")).click();
driver.findElement(By.name("username")).sendKeys(uname);
driver.findElement(By.name("password")).sendKeys(pwd);
driver.findElement(By.xpath("//button[@type='submit']")).click();

HTML代码: -

<input type="text" name="username" ng-class="{'number-new': ((sessionData.email | isMobile) &amp;&amp; loginForm.username.$dirty &amp;&amp; !loginForm.username.$error.required)}" ng-model="sessionData.email" data-required="" email-validate="" mobile-validate="" maxlength="30" data-ng-trim="false" class="ng-pristine md-input ng-invalid ng-invalid-required ng-valid-maxlength ng-valid-parse ng-valid-mobile-valid ng-valid-email-valid ng-touched" tabindex="0" id="input_0" aria-required="true" aria-invalid="true">

1 个答案:

答案 0 :(得分:1)

在找到用户名和密码元素之前,您必须切换到iframe。请参阅以下代码:

driver.get("https://paytm.com/");
driver.findElement(By.xpath("//a[@class='login']")).click();
try {
    Thread.sleep(3000);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[ng-hide='showVerificationScreen']")));         
driver.findElement(By.name("username")).sendKeys(uname); 
driver.findElement(By.name("password")).sendKeys(pwd); 
driver.findElement(By.xpath("//button[@type='submit']")).click();

P.S。您可以使用Chrome devtool,firebug或其他方式确定您的元素是否在iframe中。屏幕截图显示username元素位于iframe中。 Username element is inside an iframe