无法使用SeleniumWebDriver单击javascript模式中的元素

Can not click elements in javascript modal using Selenium WebDriver

本文关键字:模式 元素 javascript 单击 SeleniumWebDriver      更新时间:2023-09-26

我正试图使用Selenium WebDriver在页面上提交表单后出现的模式中单击"确定"按钮。

Driver.SwitchTo().Alert()失败,切换窗口句柄也失败。我也尝试过Driver.SwitchTo().ActiveElement(),但也失败了。在点击打开模态的按钮之前,驱动程序仍在识别页面上的元素,所以我知道它肯定不会切换,这使得Xpath和CsSelector在这段时间内毫无用处。

我试过切换浏览器,但没有效果。

<div id="confirmModal" class="modal fade">
<div class="modal header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
<h3 id="myModalLabel">Confirmation</h3>
</div>
<div class="modal-body">
<p>Confirm?</p>
<div class="alert alert-block">
<p> Are you sure? You can not undo this </p>
</div>
</div>
<div class="modal-footer">
<input type="button" class="btw" data-dismiss="modal" value="Cancel" aria-hidden="true">
<input type="button" value="OK" id="confirmation-submit" class="btn btw-primary">
</div>
</div>

任何建议都会很有帮助-谢谢!

我用以下代码解决了一个与您的问题非常相似的问题:

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(okButton_id));
IWebElement okButton = driver.FindElement(By.Id(okButton_id));
okButton.Click();

Clement的回答为我解决了这个问题。除了,我使用的是python,所以你需要做的是调用:

driver.implicitly_wait(1)

或者,如果不起作用,再等几秒钟。