无法使用SeleniumWebDriver单击javascript模式中的元素
Can not click elements in javascript modal using Selenium WebDriver
我正试图使用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)
或者,如果不起作用,再等几秒钟。
相关文章:
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 如何在不同的设备模式下强制元素的高度
- 在模式框打开之前更改 SVG 元素的颜色,并在框打开时保持该颜色
- 复制要在模式框中显示的父元素
- 输入元素模式属性的Javascript正则表达式在reFiddle上有效,但在页面上无效
- 试图通过模块模式在DOM元素上实现change()事件
- 事件委派模式,在按钮中使用 addEventListener 和嵌套元素
- 查找具有与模式匹配的属性的元素
- 引导模式元素选择
- 使用引导模式防止父 onclick 事件从子元素传播
- 无法在无头模式下使用 watir Webdriver 执行按钮元素的 onclick 事件 javascript
- 弹出模式仅适用于表格中的第一个元素,第二次单击后不会再次打开
- 设计模式下的浏览器将孤立的 LI 元素包装在 UL - Firefox 和 Chrome 中
- 我将如何移动带有元素的 SVG 模式
- 从嵌套数组中获取唯一元素的 JS 模式是什么
- 具有DOM元素的模块化模式
- 如何使用VideoJS使元素在全屏模式下可见
- 如何从单击的元素开始重新启动顺序模式
- 使用拉斐尔在svg中创建一个模式元素