首页 > 解决方案 > 如何使用 Python/Selenium 登录网站?

问题描述

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0


browser = webdriver.Chrome('C:/Users/xyz/Downloads/chromedriver.exe')


# Define all variables required
urlErep = browser.get('http://www.erepublik.com')
xPathToSubmitButton = "//*[@id='login_form']/div[1]/p[3]/button"
urlAlerts = 'https://www.erepublik.com/en/main/messages-alerts/1'
one = 1
xPathToAlerts = "//*[@id='deleteAlertsForm']/table/tbody/tr[%d]/td[3]/p" %one


def logintoerep():
    email = browser.find_element_by_id("citizen_email")
    password = browser.find_element_by_id("citizen_password")

    email.send_keys('myemail')
    password.send_keys('mypassword')

    browser.find_element_by_xpath(xPathToSubmitButton).click()


logintoerep()

上面的文字是我使用 Selenium 编写的用于登录 erepublik.com 的代码。

我的主要目标是在有人填写 Google 表单时验证 eRepublik.com 上的一些信息,然后根据 Google 表单数据完成操作。我正在尝试使用 Selenium 登录 eRepublik,并且在每次尝试运行脚本时(我需要 24/7 全天候运行,以便每当表单获得新响应时运行脚本)它会创建一个新窗口,并且10-20 次后,我登录到它要求 Selenium 无法完成的验证码的网站。在我现有的浏览器窗口中,我已经登录,所以我不必担心验证码,只需运行我的代码。

我怎样才能绕过这个问题?因为我需要脚本每次都能自行登录,但验证码不允许这样做。最好的解决方案是在我现有的浏览器窗口上使用 Selenium,但它不允许这样做。

是否可以将一些设置从我的普通浏览器窗口复制到 Selenium 运行的浏览器窗口,以便每次自动登录?

我愿意接受任何建议,只要他们能让我在我链接的网站上验证并完成一些小操作。

标签: pythonselenium

解决方案


您可以将 Chrome 配置文件附加到 Selenium 测试

options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=C:\\Path") #Path to your chrome profile
browser = webdriver.Chrome(executable_path="C:\\Users\\chromedriver.exe", chrome_options=options)

推荐阅读