尝试通过 Chromedriver 2.34、Selenium 3.8 和 Python 3.6.2 登录富国银行时出错
Posted
技术标签:
【中文标题】尝试通过 Chromedriver 2.34、Selenium 3.8 和 Python 3.6.2 登录富国银行时出错【英文标题】:Error Trying to Log In to Wells Fargo via Chromedriver 2.34, Selenium 3.8, and Python 3.6.2 【发布时间】:2018-06-01 10:56:22 【问题描述】:我正在尝试编写一个程序来让我登录到我的 Wells Fargo 帐户。但是,在运行我的代码后,它只是将我带到同一页面并且没有让我登录。我尝试将登录部分放在一个循环中,它会不断循环。
代码如下:
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get('https://connect.secure.wellsfargo.com/auth/login/present?
origin=cob&error=yes&LOB=CONS&destination=AccountSummary')
userID = browser.find_element_by_name('j_username')
userID.clear()
userID.send_keys('my_username')
password = browser.find_element_by_name('j_password')
password.clear()
password.send_keys('my_password')
password.submit()
time.sleep(5)
browser.quit
下面是截图。
这是我收到的复制粘贴错误代码:
[9152:6848:1218/202615.262:ERROR:service_manager.cc(157)] Connection InterfaceProviderSpec prevented service: content_renderer from binding interface: blink::mojom::ReportingServiceProxy exposed by: content_browser
我已尝试在谷歌上搜索该错误代码以及关键短语和部分错误代码,但尚未找到解决方案。
【问题讨论】:
也许尝试点击“登录”按钮? 我尝试通过它的 id 和名称识别点击按钮元素,然后使用 .click() 方法,但我得到了相同的结果。 【参考方案1】:要登录您的 Wells Fargo
帐户,您可以使用以下代码块:
from selenium import webdriver
browser = webdriver.Chrome(executable_path=r'C:\path\to\chromedriver.exe')
browser.get('https://connect.secure.wellsfargo.com/auth/login/present?origin=cob&error=yes&LOB=CONS&destination=AccountSummary')
userID = browser.find_element_by_xpath("//input[@id='j_username']")
userID.clear()
userID.send_keys('my_username')
password = browser.find_element_by_xpath("//input[@id='j_password']")
password.clear()
password.send_keys('my_password')
browser.find_element_by_xpath("//input[@name='continue' and @type='submit']").click()
browser.quit()
注意:当您看到错误为
ReportingServiceProxy exposed by: content_browser
时,您可以尝试包含chromedriver
二进制文件的绝对 pat。
更新:
如果你仍然遇到同样的问题(在经历了Error: Connection InterfaceProviderSpec prevented service: content_renderer from binding interface
和"service_manager:connector" prevented service: content_renderer from binding interface
之后)我建议卸载Chrome Browser
到Revo Uninstaller
并运行CCleaner
清除所有操作系统杂务并重新安装 Chrome Browser
。
【讨论】:
我会试试这个。你有任何关于我为什么会收到上述错误的信息吗?使用 xpath 方法是否有效? 好吧,名称属性j_username
和j_password
在<input>
标记内。因此,我们正在帮助 Selenium 更快地定位我们的WebElements
,从而提高我们测试执行的性能。
我也尝试通过 id 找到它们并得到相同的结果。我目睹了执行 amd 填写用户名和密码的代码的第一部分,当我尝试提交或识别单击按钮元素并使用单击方法时,它似乎特别发生。如何提高测试执行的性能来防止此错误发生?
我的脚本在你的最后失败了吗?它在我的最后做所有事情。正在使用最新的 Selenium、WebDriver 和 Web 浏览器?
我刚回到家试了一下。是的,它失败了,我从 OP 得到了同样的错误。是的,我今天刚刚下载并安装了 Selenium 和 Webdriver。 Chrome 今天也刚刚更新。【参考方案2】:
我找到了一个临时解决方法,可以改用 Firefox。 Firefox 从来没有给我最初发布的错误。但是,当我尝试使用 Firefox 时,它会将我发送到验证码页面。通过重新测试程序时的运气,我从 geckodriver 中单击了控制台窗口,并了解到如果您在不同的窗口(出现的任何窗口)中单击,富国银行不会将您发送到验证码页面并将您登录到你的帐户。所以我修改了我的代码以打开第二个浏览器并在它输入信息时将其关闭。
browser = webdriver.Firefox()
browser2 = webdriver.Firefox()
browser.get('https://connect.secure.wellsfargo.com/auth/login/present?origin=cob&error=yes&LOB=CONS&destination=AccountSummary')
userID = browser.find_element_by_id("j_username")
userID.clear()
userID.send_keys('my_username')
password = browser.find_element_by_id("j_password")
password.clear()
password.send_keys('my_password')
browser.find_element_by_name("continue").click()
browser2.quit()
【讨论】:
以上是关于尝试通过 Chromedriver 2.34、Selenium 3.8 和 Python 3.6.2 登录富国银行时出错的主要内容,如果未能解决你的问题,请参考以下文章
在 chromedriver (Selenium) 中导入根 CA