如果输入的密码错误,是否可以验证?

时间:2019-09-04 13:33:27

标签: python-3.x selenium selenium-webdriver try-catch webdriverwait

在使用selenium编写safari自动搜索程序时,是否可以知道在网站登录名中插入的密码是否错误?

我尝试使用try:except:,但是当密码错误时,硒不会引发错误。

一个例子是:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver=webdriver.Safari()
driver.get(r'website')
usr=driver.find_element_by_name(r'username')
usr.clear()
usr.send_keys(r'username')
pas=driver.find_element_by_name(r'password')
pas.clear()
pas.send_keys(r'password')
pas.send_keys(Keys.RETURN)

2 个答案:

答案 0 :(得分:2)

使用WebDriverWaitelement_to_be_clickable并遵循CSS选择器。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
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.Chrome()
driver.get(r'https://auth.florimont.ch/cas/login;jsessionid=8B5A3B65779756F3CF71ACB41E578AC3?service=https%3A%2F%2Fflore.florimont.ch%2Fhome')
usr=driver.find_element_by_name(r'username')
usr.clear()
usr.send_keys(r'username')
pas=driver.find_element_by_name(r'password')
pas.clear()
pas.send_keys(r'password')
pas.send_keys(Keys.RETURN)
print(WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#fm1 #msg"))).text)

在控制台上打印:

Invalid credentials.

浏览器快照:

enter image description here

答案 1 :(得分:0)

要验证插入网站登录名的用户名/密码是否错误,可以使用try/catch{}块,并可以使用以下Locator Strategies

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("start-maximized")
    driver = webdriver.Chrome(options=chrome_options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get("https://auth.florimont.ch/cas/login?service=https%3A%2F%2Fflore.florimont.ch%2Fhome")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#username"))).send_keys("a_random_programmer")
    driver.find_element_by_css_selector("input#password").send_keys("a_random_programmer")
    driver.find_element_by_css_selector("input.btn-submit").click()
    try:
        WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element((By.XPATH, "//h2[text()='Enter your Username and Password']//preceding::div[1]"), "Invalid credentials."))
        print("Invalid Login")
    except TimeoutException as e:
        print("Valid Login")
    driver.quit()
    
  • 控制台输出:

    Invalid Login