【问题标题】:How to verify html5 Validation with selenium python如何使用 selenium python 验证 html5 验证
【发布时间】:2019-12-15 18:25:18
【问题描述】:

我正在尝试验证验证,可以在此处查看 https://groups.google.com/forum/#!topic/webdriver/sUy6IKpQsHw,此链接不是我的,但我想验证此文本 Please fill out this field.,或任何其他更好的想法?如何验证它

我所做的如下:

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_attribute("value")),assert 给出了AssertionError,我经历了很多没有帮助的答案

HTML:

<input name= "username" id="username" required>

我尝试[print(msg.get_attribute("value").values) 看看那里有什么,它给出了以下错误AttributeError: 'unicode' object has no attribute 'values'

【问题讨论】:

  • @DebanjanB 不是python解决方案,有什么python解决方案的想法吗?
  • @DebanjanB 是的,我找到了解决方案,但它给出了以下错误 username = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.cell.small-21 .form-text.required#edit-name[name='username']"))) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = 方法 = 消息'
  • @DebanjanB 实际上我有你的代码行,在我的情况下,字段名称是用户名,所以我替换并尝试了,很抱歉我不知道该怎么做

标签: python selenium-webdriver


【解决方案1】:

要验证 验证消息是否存在,文本为请填写此字段。您必须诱导WebDriverWait visibility_of_element_located(),您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    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
    

【讨论】:

    【解决方案2】:

    你可以通过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."
    

    【讨论】:

      【解决方案3】:

      FOllwoing 应该可以工作

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

      【讨论】:

        猜你喜欢
        • 2019-08-13
        • 2020-09-13
        • 1970-01-01
        • 2014-06-12
        • 2012-03-15
        • 2021-07-01
        • 1970-01-01
        • 2013-04-16
        • 1970-01-01
        相关资源
        最近更新 更多