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

标签 java selenium selenium-webdriver

我是使用 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/

相关文章:

javascript - 使用 Javascript 执行器选择单选按钮

python - 无法在 python selenium 中使用 is_displayed 属性

java - 如何在鼠标监听器中添加参数

java - Selenium - 无法启动 Selenium session : Failed to start new browser session: Error while launching browser

java - JAXB package-info.java 声明在单独的 Maven 模块中被忽略

c# - 使用 Selenium WebDriver C# 在下拉列表中选择每个选项

java - Actions.dragAndDropBy 未按预期工作

python - ElementNotInteractableException : Message: element not interactable error while sending text to Email field on Quora using Selenium with Python

Java正则表达式

java - 从 PRAGMA table_info() 获取名称和类型