python - 如何使用 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 运行的浏览器窗口,以便每次自动登录?
我愿意接受任何建议,只要他们能让我在我链接的网站上验证并完成一些小操作。
解决方案
您可以将 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)
推荐阅读
- android - 在同一活动的对话框之间共享对象
- security - Microsoft 是否有推荐的方法来处理 HttpClient 中标头中的机密?
- reactjs - Reducer 未连接到 redux 状态
- angular - Angular 8 使元素正方形抛出错误:ExpressionChangedAfterItHasBeenCheckedError
- python - 将制表符分隔的 .txt 解析为 Pandas DataFrame
- r - R blogdown 找不到图像文件
- python - Keras SimpleRNN / LSTM 默认使用哪个轴作为时间轴?
- javascript - React - .setState 部分不起作用
- reactjs - React - 组件定义缺少显示名称
- smalltalk - Smalltalk,将命令行参数作为文件名