0

网址 - https://www.vtiger.com/begin-free-trial

输入无效的电子邮件地址,例如“abcde”,然后单击下一步按钮。您会注意到一条错误消息,该消息将显示 4/5 秒(下图)

我们如何验证此错误消息,我也无法获取此错误消息。

在此处输入图像描述

4

2 回答 2

0

试试下面的代码 -

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
action = ActionChains(driver)

driver.get('https://www.vtiger.com/begin-free-trial/')

driver.find_element_by_name('email').send_keys("xyz")
driver.find_element_by_xpath('//button[contains(text(),"Next")]').click()

messagetoVerify = "Please include an '@' in the email address. 'xyz' is missing an '@'."
myValidationmsg = driver.find_element(By.NAME, 'email').get_attribute("validationMessage")

if myValidationmsg == messagetoVerify:
    print("Verified Validation Message")

输出 -

Please include an '@' in the email address. 'xyz' is missing an '@'.

注意 - 如果它解决了您的问题,请标记为答案。

于 2020-07-29T05:57:31.197 回答
0

您所指的错误消息是验证消息,它是约束 APIelement.setCustomValidity()方法的结果。

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


解决方案

要检索错误消息,请填写此字段。你需要:

  • 诱导WebDriverWait使所需元素成为可点击的。

  • 现在,要提取validationMessage,您可以使用以下任一定位器策略

  • 使用CSS_SELECTOR

    • 代码块:

      driver.get("https://www.vtiger.com/begin-free-trial/")
      work_email = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='email']")))
      work_email.send_keys("dggf")
      print(work_email.get_attribute("validationMessage"))
      
    • 控制台输出:

      Please include an '@' in the email address. 'dggf' is missing an '@'.
      
  • 使用XPATH

    • 代码块:

      driver.get("https://www.vtiger.com/begin-free-trial/")
      work_email = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='email']")))
      work_email.send_keys("dggf")
      print(work_email.get_attribute("validationMessage"))
      
    • 控制台输出:

      Please include an '@' in the email address. 'dggf' is missing an '@'.
      

参考

您可以在以下位置找到详细的相关讨论:

于 2020-07-29T09:10:11.263 回答