Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让SeleniumWebDriver(Java)单击此按钮?_Java_Selenium_Selenium Webdriver - Fatal编程技术网

如何让SeleniumWebDriver(Java)单击此按钮?

如何让SeleniumWebDriver(Java)单击此按钮?,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我不熟悉使用SeleniumWebDriver来自动化测试用例。到目前为止(使用Selenium和Java),我能够打开测试网站,输入用户名和密码,然后登录。然而,在登录之后,用户会被重新引导到一个带有安全警告的屏幕,该警告必须在用户访问实际网站之前被接受。要做到这一点,他们必须点击一个名为“我同意”的按钮。我无法让Selenium点击按钮,没有它,我无法访问站点的其余部分实现自动化。以下是按钮的HTML: <form name="landingHandlerSF" method="pos

我不熟悉使用SeleniumWebDriver来自动化测试用例。到目前为止(使用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>

有人能帮我吗?

您是否尝试将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);
    }
}