首页 文章

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

提问于
浏览
1

我是使用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();

有人可以帮我这个吗?

2 回答

  • 1

    根据我的理解,页面重定向到新的html页面,但驱动程序将指向父页面(在您的情况下为登录页面),因此您可能必须切换到 child window 才能单击我同意按钮 .

    以下代码将驱动程序从当前窗口(即登录窗口)切换到新窗口(即安全警告) . 点击“我同意”后,安全警告将关闭,驱动程序将自动切换回来

    String thisWindow = driver.getWindowHandle();
    Set<String> windowHandles = driver.getWindowHandles();
    for (String windowHandle : windowHandles) {
        if (!windowHandle.contains(thisWindow)) {
            driver.switchTo().window(windowHandle);
        }
    }
    

    如果它没有导航到新页面,那么它必须在某些 iframes 下,在这种情况下,您可能需要切换到框架并单击按钮 .

    希望这会奏效 . 试试这个,让我知道发生了什么 .

  • 0

    您是否尝试将JavaScript代码注入浏览器?

    driver.executeScript("setValue('agreetoTerms', 'Y')");
    

    要么

    driver.executeScript("document.getElementsByName('buttonAction')[0].click()");
    

相关问题