Selenium Webdriver无法获取Modal中的元素

时间:2017-03-19 03:16:50

标签: selenium selenium-webdriver modal-dialog

我正在编写一个Selenium Webdriver脚本,该脚本应该点击一个链接然后弹出这个模态窗口。

Modal Window on the page

当我尝试访问卡号字段(//输入[@id = pan])时,我得到没有找到这样的元素异常org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"pan"}

Input control I want to get hold of

这是我试过的代码没有运气:

WebElement modal = driver.findElement(By.xpath("//div[@class='ute-pay-now-modalContent']"));
driver.switchTo().frame(modal);
WebElement el =  driver.findElement(By.xpath("//input[@id='pan']"));

还试过这个:

WebElement modal = driver.findElement(By.className("ute-pay-now-modalContent"));
driver.switchTo().frame(modal);
WebElement el =  driver.findElement(By.xpath("//input[@id='pan']"));

还试过这个:

WebDriverWait block = new WebDriverWait(driver,10);
WebElement modal = block.until(ExpectedConditions.visibilityOfElementLocated(By.className("ute-pay-now-modalContent")));
WebElement pan;
pan    = modal.findElement(By.id("pan"));

还试过这个:

driver.switchTo().defaultContent();

还试过这个:

driver.switchTo().activeElement();

有人可以帮忙建议我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

似乎<div class="ute-pay-‌​now-modalContent">包含iframe#sema所需的input字段。尝试下面的代码,让我知道结果:

WebDriverWait block = new WebDriverWait(driver,10);
block.until(ExpectedConditions.visibilityOfElementLocated(By.className("ute-pay-now-modalContent")));
driver.switchTo().frame("sema");
WebElement pan;
pan = modal.findElement(By.id("pan"));