输入的密码错误时是否可以验证?
Is it possible to validate when an entered password is wrong?
使用 selenium 为 safari 编写 auto-it 时,是否可以知道插入网站登录的密码是否错误?
我试过使用 try:
和 except:
,但是当密码错误时 selenium 不会引发错误。
一个例子是:
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)
使用 WebDriverWait
和 element_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.
浏览器快照:
要验证插入网站登录名的 username/password 是否错误,您可以使用 try/catch{}
块,也可以使用以下 :
代码块:
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
使用 selenium 为 safari 编写 auto-it 时,是否可以知道插入网站登录的密码是否错误?
我试过使用 try:
和 except:
,但是当密码错误时 selenium 不会引发错误。
一个例子是:
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)
使用 WebDriverWait
和 element_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.
浏览器快照:
要验证插入网站登录名的 username/password 是否错误,您可以使用 try/catch{}
块,也可以使用以下
代码块:
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