【发布时间】:2021-11-12 01:52:54
【问题描述】:
我遇到了无法在模式中选择按钮的问题。模态仅在运行我的 selenium 脚本时出现,在手动遍历网页时不出现。有趣的是,当我的脚本运行 try/except 时,模态始终会出现,如下所示,但程序进入下一步并且无法让元素单击。在此 try:except 之后尝试获取元素也失败了。否则模式不会显示。
try:
element=driver.find_element_by_xpath('//div[contains(@href,"appointment")]')
element.click()
print("Looking for the modal button")
except NoSuchElementException:
print("*****Did not find the modal button")
我尝试了以下方法但没有成功:
-
WebDriverWait(driver, 300).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-default btn-ok'][@data-dismiss='modal']"))).click()这只是超时。 -
获取元素的不同方法:
element = driver.find_element_by_class_name("btn.btn-default.bt-ok")和
element=driver.find_element_by_xpath('//div[contains(@href,"appointment")]')
在这两种情况下都找不到元素。
- 尝试使用 cookie 运行,结果是一样的。
- 尝试了各种睡眠定时器,但在此睡眠期间没有出现模式
这是本节的 HTML 片段。不确定
<div class="schedule-modal modal fade in" tabindex="-1" role="dialog" aria-hidden="false" style="display: block;">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<p><strong> Text
</p>
</div>
<div class="modal-footer">
<a class="btn btn-default btn-ok" href="/appointment">Start Appointment</a>
</div>
</div>
</div>
</div>
提前感谢您的帮助!
更新
看起来上面的代码存在 HTML 代码在模式弹出之前存在于源页面上,这就是我无法访问该元素的原因。我的下一个问题是这个调度模式函数在做什么:
function showNotice(dom) {
var $scheduleModal = $(".schedule-modal");
if ($scheduleModal.length) {
var link = $(dom).attr('href');
$scheduleModal.find('.btn-ok').attr('href', link);
$scheduleModal.modal('toggle');
return false;
}
【问题讨论】:
标签: python selenium xpath modal-dialog webdriverwait