为了账号安全,请及时绑定邮箱和手机立即绑定

Python+Selenium:检查不属于页面源的自动关闭通知

Python+Selenium:检查不属于页面源的自动关闭通知

拉风的咖菲猫 2022-07-19 15:47:42
有一个带有必需选项 ( required="required) 的选择标签:<select name="doc[]" id="doc" multiple="multiple" size="18" required="required">  <option value="1">А.2 Проверочный перечень для ФИ плана сертификации ПО</option>  <option value="2">А.3 Проверочный перечень для ФИ плана разработки ПО</option>  ...此选项的目的是如果在多选选择标记中未选择任何内容,则不允许按下提交按钮。看起来像:https://i.stack.imgur.com/SMbSK.png我需要检查是否使用 Selenium + Python 显示了一些警报/通知/弹出窗口。警报不是可以在 HTML 中看到和/或切换到的标准窗口,即源 HTML 没有任何反应,无法检查元素,它仅显示 5 秒然后消失。它在不同的浏览器中看起来是一样的(上面的第一张图片来自 Chrome,同样来自 Opera),这是来自 Firefox:https://i.stack.imgur.com/WrGlq.png和 IE: https://i.stack.imgur.com/s4xbI.pngMS Edge 不显示任何消息。还使用 Chrome/Firefox devtools 进行监控 - 控制台中没有任何反应,它也不是动画(chrome F12 - 点菜单 - 更多工具 - 动画)。那么如何检查此类通知的存在呢?
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

这是表单验证:


element = driver.find_element_by_id('doc')


# boolean

is_valid = drive.execute_script('return arguments[0].validity.valid', element)


# get validation message

validation_message = element.get_attribute('validationMessage')


查看完整回答
反对 回复 2022-07-19
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您所指的弹出窗口是Constraint API 的 element.setCustomValidity()方法的结果。


注意:HTML5 约束验证不会消除服务器端验证的需要。尽管预期的无效表单请求要少得多,但不兼容的浏览器(例如,没有 HTML5 和没有 JavaScript 的浏览器)或试图欺骗您的 Web 应用程序的坏人仍然可以发送无效的表单请求。因此,与 HTML4 一样,您还需要验证服务器端的输入约束,其方式与客户端所做的一致。


解决方案

要检索从该element.setCustomValidity()方法产生的文本,您必须为 和 诱导WebDriverWait并且element_to_be_clickable()可以使用以下任一Locator Strategies:


使用CSS_SELECTOR:


print(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select#doc[name^='doc']"))).get_attribute("validationMessage"))

使用XPATH:


WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='doc' and starts-with(@name, 'doc')]"))).click()

注意:您必须添加以下导入:


from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC


查看完整回答
反对 回复 2022-07-19
  • 2 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信