因此,我需要创建一些测试来检查登录/注册。 当用户输入的电子邮件不正确时,我试图捕获隐藏错误。 脚步: 1. 输入无效的电子邮件。 2. 按下“登录”按钮。 3.应该显示“密码或电子邮件不正确”的错误。
下面我写了 2 个函数。 我如何结合这两个功能? 第二个功能总是显示“OK”状态。
def test_login_user(self):
driver = self.driver
driver.get("https://courses.edx.org/login")
driver.find_element_by_name('email').send_keys("email24")
driver.find_element_by_name('password').send_keys('12345678')
driver.find_element_by_name('signin').click()
def test_error(self):
driver = self.driver
driver.get('https://courses.edx.org/login')
error = driver.find_element_by_css_selector('div.status.submission-error')
if error.is_displayed():
return True
else:
return False
最佳答案
首先,不是通过 name
定位元素 - 切换到 id
和 class
属性 - 有多个元素具有相同的名称.
此外,您需要使用 Explicit Waits 来等待元素变为可见。
工作示例:
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("https://courses.edx.org/login")
email = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "login-email")))
email.send_keys("illegal")
driver.find_element_by_name('password').send_keys('12345678')
driver.find_element_by_css_selector('button.login-button').click()
try:
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.status.submission-error")))
print True # in your case inside a function it would be "return True"
except TimeoutException:
print False # in your case inside a function it would be "return False"
关于python - selenium python 检查隐藏错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28766049/