我的paytm登录任务解决了使用selenium解决但如何从页面源知道iframe ID?

时间:2015-12-31 08:24:23

标签: java selenium selenium-webdriver

点击“paytm.com”登录时获取弹出窗口,但我无法输入用户名和密码

(####我们如何知道iframe id #######)

这是代码

public void Test() throws Exception {
    System.setProperty("webdriver.chrome.driver", "F:\\SELENIUM\\Lib\\chromedriver.exe");
    driver= new ChromeDriver();
    // driver= new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("https://paytm.com/");
    Thread.sleep(2000);
    driver.findElement(By.linkText("Log In / Sign Up")).click();
    driver.manage().timeouts().implicitlyWait(100,TimeUnit.SECONDS);
    driver.switchTo().alert().accept();
    driver.manage().timeouts().implicitlyWait(100,TimeUnit.SECONDS);
    //driver.switchTo().frame(driver.findElement(By.xpath(".//iframe[@ng-hide=’showVerificationScreen’]")));
    driver.findElement(By.xpath(".//*[@id='input_0']")).sendKeys("email");
    driver.findElement(By.xpath(".//*[@id='input_1']")).sendKeys("passwrd");
    Thread.sleep(1000);
    driver.findElement(By.xpath(".//*[@id='loginForm']/div/md-content/button[1]")).click();

    driver.switchTo().defaultContent();
}

3 个答案:

答案 0 :(得分:0)

那是框架不警报。因此必须根据其索引或ID切换到iframe。 在paytm.com中,根据HTML代码,登录框架是第3个iframe。你必须把代码编写为switchto.iframe(2);

尝试下面的代码吧。它会起作用

driver.get("http://www.paytm.com");
driver.findElement(By.linkText("Log In / Sign Up")).click();
driver.switchTo().frame(2); // 2 is the iframe index
driver.findElement(By.name("username")).sendKeys("*******");
driver.findElement(By.name("password")).sendKeys("*****");

答案 1 :(得分:0)

您的代码提供例外:

  

org.openqa.selenium.NoAlertPresentException

这显然没有传达任何警告。在间谍活动中我们得到:

iframe width="715px" height="425px" frameborder="0" ng-class="homePageScrolledDown? 'fixedhead' : ''" border="0" ng-src="/v1/api/login?isIframe=true&theme=mp-web" ng-hide="showVerificationScreen" src="/v1/api/login?isIframe=true&theme=mp-web"

替换 -

driver.switchTo().alert().accept()

driver.switchTo().frame(2);

//第二个代表索引号。这是第3帧,可以使用pageSource进行识别。 希望这有用

答案 2 :(得分:0)

这是完整的WORKING代码 `

    driver.get("http://www.paytm.com");
    driver.findElement(By.linkText("Log In / Sign Up")).click();
    Thread.sleep(3000);
    driver.switchTo().frame(1);

    driver.findElement(By.xpath(".//*[@id='input_0']")).sendKeys(
            "email");
    driver.findElement(By.xpath(".//*[@id='input_1']")).sendKeys(
            "passwrd");
    Thread.sleep(1000);
    driver.findElement(
            By.xpath(".//*[@id='loginForm']/div/md-content/button[1]"))
            .click();`