【发布时间】:2018-01-02 11:34:51
【问题描述】:
我知道如何使用 Selenium 关闭弹出窗口,但这个非常棘手。这就是发生的事情。单击按钮后会打开此弹出窗口。 当我执行这段代码时:
WebElement button = driver.findElement(...);
log.info("step 1");
button.click();
log.info("step 2");
Alert alert = driver.switchTo().alert();
alert.accept();
WebElement nextButton = driver.findElement(...);
nextButton.click();
第 2 步部分未出现在日志中。点击后 Eclipse 冻结,但点击完成,页面上显示以下弹出窗口。
这就是我认为发生的事情。该按钮实际上具有以下 javascript onclick 代码:
continueButton();return;
现在弹出窗口在 continueButton() 函数内启动。
所以我想我的 java 代码只是在这里冻结,等待 Javascript 完成这个函数并执行上面的 return。但由于有这个弹出窗口阻止 javascript 继续运行,我实际上无法关闭窗口,因为我无法关闭窗口。如果我手动执行,第 2 步会出现在日志中,并且 java 代码执行会继续。
鉴于我无法更改页面源,有什么办法可以解决这个问题?
我尝试的是单独执行javascript部分;而不是点击:
jsexecutor.execute("continueButton();")
log.info("step 1");
Alert alert = driver.switchTo().alert();
alert.accept();
jsexecutor.execute("return;")
但这完全是在相同的行为中运行。 popup show but step 1不在日志中,所以java执行就卡住了。
【问题讨论】:
-
您能总结一下您尝试自动化的确切手动步骤吗?通过
alert.accept();接受警报后,请更新有关您将执行的下一步的问题 -
我已经添加了下一步,虽然我从来没有真正做到过。
-
@Jefeinfiltrado,这个问题还不够清楚。这是否与此有关 - github.com/seleniumhq/selenium-google-code-issue-archive/issues/…?
标签: javascript java selenium popup