Python(Selenium):如何使用登录重定向/组织登录登录网站

Joh*_*Doe 2 python selenium web-scraping

我不是专业的程序员,所以请原谅任何愚蠢的错误——我正在做一些研究,我正在尝试使用 Selenium 登录到一个数据库来搜索大约 1000 个术语。

我有两个问题: 1. 如何在重定向到第 2 页上的组织标志后使用 Selenium 登录。如何搜索数据库

在我解决 1 之前,我无法真正得到 2,所以我真的只询问 1。

这是我到目前为止的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

path_to_chromedriver = 'C:/Users/Kyle/Desktop/chromedriver' # change path as needed
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
url = 'http://library.universityname.edu/corpaffils'
browser.get(url)

username = selenium.find_element_by_id("login_id")
password = selenium.find_element_by_id("login_password")

username.send_keys("my username")
password.send_keys("my password")

selenium.find_element_by_name("submit").click()
Run Code Online (Sandbox Code Playgroud)

当我导航到上述 URL 时,它会将我定向到我的组织登录页面(例如 login.universityname.edu),我应该能够在其中输入我的用户名和密码,然后它会将我定向到数据库,但是当我执行上面的代码时,它并没有让我登录。

我可以在组织登录页面上找到的 html 如下所示:

<li><label for="login_id">ID:</label><input id="login_id" placeholder="ID" type="text" NAME="user" SIZE="20" VALUE=""/></li>
...
...
<li><label for="login_password">Password:</label><input id="login_password" placeholder="Password" type="password" NAME="pass" SIZE="20" /></li>
...
...
<ul class="submit">
<li><input type="SUBMIT" name="submit" value="Sign in"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我认为可能有两个问题,但我不确定是哪个: 1. 我的代码试图在重定向之前输入登录信息,因此它没有输入任何内容;或 2. 我的 Selenium 代码没有正确识别组织登录的字段,所以它没有让我登录;或 3. 两者兼而有之

我需要做些什么来解释重定向吗?我是否正确识别登录字段并准确处理它们?

MD.*_*sar 5

当您找到一个元素时替换seleniumbrowser,这将起作用。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

path_to_chromedriver = 'C:/Users/Kyle/Desktop/chromedriver' # change path as needed
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
url = 'http://library.universityname.edu/corpaffils'
browser.get(url)

username = browser.find_element_by_id("login_id")
password = browser.find_element_by_id("login_password")

username.send_keys("my username")
password.send_keys("my password")

browser.find_element_by_name("submit").click()
Run Code Online (Sandbox Code Playgroud)

您无需为重定向做任何事情。登录后会自动重定向。

注意:完成后不要忘记closequit浏览器。