我是使用 Selenium WebDriver 来自动化测试用例的新手。到目前为止(使用 Selenium 和 Java),我可以打开测试网站,输入用户名和密码,然后登录。但是,登录后,用户将被重定向到一个屏幕,其中显示安全警告,必须在他们可以访问实际网站之前接受。为此,他们必须单击名为“我同意”的按钮。我无法让 Selenium 单击该按钮,如果没有它,我就无法访问网站的其余部分以实现自动化。以下是该按钮的 HTML:
<form name="landingHandlerSF" method="post" action="/apps/bap/secLandingHandler.do">
<input name="userAgreedTerms" value="" type="hidden">
<input name="submit" value="landing" type="hidden">
<input name="buttonAction" value="I Agree" onclick="setValue('agreetoTerms', 'Y')" type="submit">
</form>
这是我尝试过的代码(不起作用):
WebElement button = driver.findElement(By.name("buttonAction"));
button.click();
有人可以帮我解决这个问题吗?
最佳答案
根据我的理解,页面正在重定向到新的 html 页面,但驱动程序将指向父页面(在您的情况下为登录页面),因此您可能必须切换到子窗口
才能单击我同意按钮。
以下代码会将驱动程序从当前窗口(即登录窗口)切换到新窗口(即安全警告)。点击我同意后,安全警告将关闭,驱动程序将自动切换回来
String thisWindow = driver.getWindowHandle();
Set<String> windowHandles = driver.getWindowHandles();
for (String windowHandle : windowHandles) {
if (!windowHandle.contains(thisWindow)) {
driver.switchTo().window(windowHandle);
}
}
如果它没有导航到新页面,那么它一定位于某些 iframe
下,在这种情况下,您可能需要切换到框架并单击按钮。
希望这会起作用。 试试这个,让我知道发生了什么。
关于java - 如何让 Selenium WebDriver (Java) 单击此按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48232386/