我正在使用 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) && loginForm.username.$dirty && !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">
答案 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中。