我需要确认一个模态弹出窗口。我有一个表格,我填写并必须转到下一页。当我单击“继续”时,会出现一个模态弹出窗口,询问填写的详细信息是否正确?
上面有两个按钮和一些其他描述。一个按钮读取取消,另一个按钮说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
?
答案 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
。