我正在尝试使用下面发布的代码,使用Selenium自动化duolingo登录。 虽然一开始一切正常,但在点击登录按钮后,我总是在网站上收到一条“密码错误”的消息。 我一次又一次地检查密码,甚至将其更改为没有特殊字符的密码,但登录仍然失败。 我在其他示例中看到,有时会有一个额外的密码输入字段,但是在检查html时找不到
我会错过什么
(旁注:我也愿意接受一个完全不同的解决方案,没有webdriver,因为我真的只想访问duolingo.com/learn页面获取一些数据,但到目前为止,我还没有找到其他登录方式)
使用的代码:
from selenium import webdriver
from time import sleep
url = "https://www.duolingo.com/"
def login():
driver = webdriver.Chrome()
driver.get(url)
sleep(2)
hve_acnt_btn = driver.find_element_by_xpath("/html/body/div/div/div/span[1]/div/div[1]/div[2]/div/div[2]/a")
hve_acnt_btn.click()
sleep(2)
email_input = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[2]/form/div[1]/div/label[1]/div/input")
email_input.send_keys("email@email.com")
sleep(2)
pwd_input = driver.find_element_by_css_selector("input[type=password]")
pwd_input.clear()
pwd_input.send_keys("password")
sleep(2)
login_btn = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[2]/form/div[1]/button")
login_btn.click()
sleep(5)
login()
由于字符限制,我无法发布网站的html,因此这里是duolingo页面的链接:Duolingo
切换到Firefox或不告诉页面您正在自动访问的浏览器。关于一个非常类似的问题,请参见我前面的答案:https://stackoverflow.com/a/57778034/8375783
长话短说:当您启动Chrome时,它将与
navigator.webdriver=true
一起运行。您可以在控制台中进行检查。页面可以检测到该标志并阻止登录或其他操作,从而导致登录无效。这是浏览器在启动期间设置的只读标志使用Chrome,我也无法登录到Duolingo。在我将驱动程序切换到Firefox之后,同样的代码就开始工作了
另外,如果我可以推荐的话,请尝试使用带有属性的Xpath
与此相反:
您可以使用:
这同样适用于:
vs:
相关问题 更多 >
编程相关推荐