如何使用selenium python验证html5验证

如何使用selenium python验证html5验证,python,selenium-webdriver,html5,Python,Selenium Webdriver,Html5,我正在尝试验证,可以在这里看到,此链接不是我的,但我想验证此文本请填写此字段。,或者其他更好的主意?如何验证 我所做的如下: msg = self.driver.find_element_by_id("username") print(msg.get_attribute("value")) time.sleep(10) assert msg.get_attribute("value") == "Please fill out this field." Print给出了以下输出>Print(ms

我正在尝试验证,可以在这里看到,此链接不是我的,但我想验证此文本
请填写此字段。
,或者其他更好的主意?如何验证

我所做的如下:

msg = self.driver.find_element_by_id("username")
print(msg.get_attribute("value"))
time.sleep(10)
assert msg.get_attribute("value") == "Please fill out this field."
Print给出了以下输出
>Print(msg.get_属性(“value”))
和assert给出了
AssertionError
,我已经通过了许多对我没有帮助的答案

HTML:



我尝试了打印(msg.get\u属性(“value”).values)若要查看其中的内容,并且它给出了以下错误
AttributeError:“unicode”对象没有属性“值”

若要验证验证消息是否存在,请填写此字段。您必须为位于()的元素的
可见性诱导WebDriverWait
您可以使用以下任一选项:

  • 使用
    CSS\u选择器

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input#username[name='username']"))).get_attribute("validationMessage"))
    
  • 使用
    XPATH

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "input[@id='username' and @name='username']"))).get_attribute("validationMessage"))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

您可以获取
validationMessage
属性以获取验证消息:

msg = self.driver.find_element_by_id("username")
validation_message = msg.getAttribute("validationMessage")
# or
# validation_message = self.driver.execute_script("return arguments[0].validity.valid;", msg)

assert validation_message == "Please fill out this field."
接下来的工作应该是有效的

username = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "username")))
assert username.get_attribute("validationMessage") == "Please fill out this field."

@DebanjanB这就是python解决方案,你知道python解决方案吗?@DebanjanB是的,我找到了解决方案,但它给出了以下错误username=WebDriverWait(self.driver,20)。直到(EC.element可点击((By.CSS_选择器,“input.cell.small-21.form text.required#edit name[name='username']))我有你的代码行,在我的情况下,字段名是用户名,所以我很抱歉,我不知道该怎么做
username = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "username")))
assert username.get_attribute("validationMessage") == "Please fill out this field."