如何让SeleniumWebDriver(Java)单击此按钮?
我不熟悉使用SeleniumWebDriver来自动化测试用例。到目前为止(使用Selenium和Java),我能够打开测试网站,输入用户名和密码,然后登录。然而,在登录之后,用户会被重新引导到一个带有安全警告的屏幕,该警告必须在用户访问实际网站之前被接受。要做到这一点,他们必须点击一个名为“我同意”的按钮。我无法让Selenium点击按钮,没有它,我无法访问站点的其余部分实现自动化。以下是按钮的HTML:如何让SeleniumWebDriver(Java)单击此按钮?,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我不熟悉使用SeleniumWebDriver来自动化测试用例。到目前为止(使用Selenium和Java),我能够打开测试网站,输入用户名和密码,然后登录。然而,在登录之后,用户会被重新引导到一个带有安全警告的屏幕,该警告必须在用户访问实际网站之前被接受。要做到这一点,他们必须点击一个名为“我同意”的按钮。我无法让Selenium点击按钮,没有它,我无法访问站点的其余部分实现自动化。以下是按钮的HTML: <form name="landingHandlerSF" method="pos
<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>
有人能帮我吗?您是否尝试将JavaScript代码注入浏览器
driver.executeScript("setValue('agreetoTerms', 'Y')");
或
根据我的理解,页面正在重定向到新的html页面,但驱动程序将指向父页面(在您的情况下为登录页面),因此您可能必须切换到
子窗口
,以便单击“我同意”按钮
以下代码将驱动程序从当前窗口(即登录窗口)切换到新窗口(即安全警告)。单击后,我同意安全警告将关闭,驾驶员将自动切换回
String thisWindow = driver.getWindowHandle();
Set<String> windowHandles = driver.getWindowHandles();
for (String windowHandle : windowHandles) {
if (!windowHandle.contains(thisWindow)) {
driver.switchTo().window(windowHandle);
}
}
String thisWindow=driver.getWindowHandle();
设置windowHandles=driver.getWindowHandles();
用于(字符串windowHandle:windowHandles){
如果(!windowHandle.contains(thisWindow)){
driver.switchTo().window(windowHandle);
}
}
如果它没有导航到新页面,则它必须位于某些iframes
下,在这种情况下,您可能需要切换到frame并单击按钮
希望这能奏效。
试试这个,让我知道发生了什么。错误是什么?这将有助于更好地调试。你能详细说明一下到底发生了什么吗?你说的
不起作用是什么意思?使用错误堆栈跟踪更新问题。Pradeep的答案是问题所在,但感谢您的帮助:)Pradeep的答案是问题所在,但感谢您的帮助:)
driver.executeScript("document.getElementsByName('buttonAction')[0].click()");
String thisWindow = driver.getWindowHandle();
Set<String> windowHandles = driver.getWindowHandles();
for (String windowHandle : windowHandles) {
if (!windowHandle.contains(thisWindow)) {
driver.switchTo().window(windowHandle);
}
}