使用 Selenium Python 生成新密码
Using Selenium Python generate a new password
我忘记了密码,我用 Selenium 编写了这段代码来尝试恢复我的通行证,但我不知道如何继续。
新密码按钮不起作用。
有人能帮我吗?我尝试了不同的方式来继续,但我不知道。有什么办法进入吗?
我正在尝试使用该功能记住我的密码。像蛮力一样的东西。所以,我不知道如何循环生成新密码,使用函数,将其输入框“Contraseña:”直到正确
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
from selenium.webdriver.support.ui import Select
import time
import os
import datetime
from datetime import datetime
from playsound import playsound
import smtplib, ssl
from random import sample
def password_generator(longitud):
abc_minusculas = "abcdefghijklmnopqrstuvwxyz"
abc_mayusculas = abc_minusculas.upper()
numeros = "0123456789"
secuencia = abc_minusculas + abc_mayusculas + numeros
password_union = sample(secuencia, longitud)
password_result = "".join(password_union)
return password_result
PATH = "C:\Program Files (x86)\Chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("http://siga.frba.utn.edu.ar/")
print(driver.title)
link = driver.find_element_by_id("page-try")
link.click()
time.sleep(1)
link = driver.find_element_by_xpath('//*[@id="menu-page-try"]/p[4]/a')
link.click()
time.sleep(1)
search = driver.find_element_by_name("form_email")
search.send_keys("35335")
search.send_keys(Keys.RETURN)
time.sleep(0.5)
1 您使用的定位器不是唯一的(有两个)。所以我用 xpath
定位器 //input[@name='form_email']
.
替换了它
2 您到处都在使用 time.sleep
。它可能比使用 Selenium 的 explicit/implicit 等待慢,而且它非常不稳定
因此,我在您的代码中添加了 wait = WebDriverWait(driver, 30)
并应用了显式等待。
3 另外,我注意到 page-try
id 不是唯一的,所以我将其替换为 css
选择器。如果您使用的是 find_element...,而不是 find_elements... 那么您的定位器必须是唯一的。
解决方案
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
from selenium.webdriver.support.ui import Select
import time
import os
import datetime
from datetime import datetime
import smtplib, ssl
from random import sample
PATH = '/snap/bin/chromium.chromedriver'
driver = webdriver.Chrome(executable_path=PATH)
driver.get("http://siga.frba.utn.edu.ar/")
print(driver.title)
wait = WebDriverWait(driver, 30)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#page-try"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(), 'Usuarios registrados')]"))).click()
search = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@name='form_email']")))
search.send_keys("35335")
search.send_keys(Keys.RETURN)
要单击 Solicitar nueva contraseña
按钮,请使用此 xpath://a[contains(text(), 'Solicitar nueva contraseña')]
尝试使用我提供的定位器作为您网站上其他元素的示例。以此为参考https://www.w3schools.com/xml/xpath_intro.asp
我忘记了密码,我用 Selenium 编写了这段代码来尝试恢复我的通行证,但我不知道如何继续。 新密码按钮不起作用。 有人能帮我吗?我尝试了不同的方式来继续,但我不知道。有什么办法进入吗?
我正在尝试使用该功能记住我的密码。像蛮力一样的东西。所以,我不知道如何循环生成新密码,使用函数,将其输入框“Contraseña:”直到正确
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
from selenium.webdriver.support.ui import Select
import time
import os
import datetime
from datetime import datetime
from playsound import playsound
import smtplib, ssl
from random import sample
def password_generator(longitud):
abc_minusculas = "abcdefghijklmnopqrstuvwxyz"
abc_mayusculas = abc_minusculas.upper()
numeros = "0123456789"
secuencia = abc_minusculas + abc_mayusculas + numeros
password_union = sample(secuencia, longitud)
password_result = "".join(password_union)
return password_result
PATH = "C:\Program Files (x86)\Chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("http://siga.frba.utn.edu.ar/")
print(driver.title)
link = driver.find_element_by_id("page-try")
link.click()
time.sleep(1)
link = driver.find_element_by_xpath('//*[@id="menu-page-try"]/p[4]/a')
link.click()
time.sleep(1)
search = driver.find_element_by_name("form_email")
search.send_keys("35335")
search.send_keys(Keys.RETURN)
time.sleep(0.5)
1 您使用的定位器不是唯一的(有两个)。所以我用 xpath
定位器 //input[@name='form_email']
.
2 您到处都在使用 time.sleep
。它可能比使用 Selenium 的 explicit/implicit 等待慢,而且它非常不稳定
因此,我在您的代码中添加了 wait = WebDriverWait(driver, 30)
并应用了显式等待。
3 另外,我注意到 page-try
id 不是唯一的,所以我将其替换为 css
选择器。如果您使用的是 find_element...,而不是 find_elements... 那么您的定位器必须是唯一的。
解决方案
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
from selenium.webdriver.support.ui import Select
import time
import os
import datetime
from datetime import datetime
import smtplib, ssl
from random import sample
PATH = '/snap/bin/chromium.chromedriver'
driver = webdriver.Chrome(executable_path=PATH)
driver.get("http://siga.frba.utn.edu.ar/")
print(driver.title)
wait = WebDriverWait(driver, 30)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#page-try"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(), 'Usuarios registrados')]"))).click()
search = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@name='form_email']")))
search.send_keys("35335")
search.send_keys(Keys.RETURN)
要单击 Solicitar nueva contraseña
按钮,请使用此 xpath://a[contains(text(), 'Solicitar nueva contraseña')]
尝试使用我提供的定位器作为您网站上其他元素的示例。以此为参考https://www.w3schools.com/xml/xpath_intro.asp