无法使用selenium

时间:2017-08-24 05:37:24

标签: java selenium modal-dialog webdriver

我需要确认一个模态弹出窗口。我有一个表格,我填写并必须转到下一页。当我单击“继续”时,会出现一个模态弹出窗口,询问填写的详细信息是否正确?

上面有两个按钮和一些其他描述。一个按钮读取取消,另一个按钮说Yes, information is correct.我尝试通过

切换到模态元素
driver.switchTo().frame(0);  // there is only one popup

然而,无论我在webDriver之后做什么,都会导致NullPointerException,因为没有找到任何遗产。

这就是我想要的

WebElement modalButtonContainer = AutoUtils.findElementByClassName(modalOverlay, "modalButtonContainer");
WebElement modalButton = AutoUtils.findElementByClassName(modalButtonContainer, "buttonClass");
modalButton.click();

但这一切都导致NullPointer。如何点击modalButton

3 个答案:

答案 0 :(得分:1)

如果我没记错,driver.switchTo().frame(0);会切换到<iframe>元素。在这里,您谈论的是popup。如果这是使用JavaScript或类似内容调用的典型javascript:alert('popup')弹出窗口,那么这又取决于

Alert alert = driver.switchTo().alert();
alert.accept();

是要走的路。否则,如果它是一些bootstrap弹出窗口,那么你根本不需要任何切换,可能只有一些FluentWait

(如果它不起作用,请分享DOM)

答案 1 :(得分:0)

由于弹出窗口上有两个按钮,并且两个按钮类名相同(&#39; buttonClass&#39;)

最好尝试使用其他名称或其他独特属性来识别按钮。

WebElement modalButtonContainer = AutoUtils.findElementByClassName(modalOverlay, "modalButtonContainer");
WebElement modalButton = AutoUtils.findElementByName(modalButtonContainer, "Cancel");
                       (or)
WebElement modalButton = AutoUtils.findElementByName(modalButtonContainer, "Yes, information is correct.");
modalButton.click();

答案 2 :(得分:0)

NullPointerException并不代表element not found。这意味着您正在尝试访问尚未初始化的对象。检查你的堆栈跟踪。它会向您显示一条确切的行,您尝试访问未初始化的对象。它可能是您要与之交互的页面对象或网页元素。检测到问题时,请验证是否使用了new运算符。或者,如果您正在使用PageFactory,请不要忘记致电initElements