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')
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
添加回答
举报