gpt4 book ai didi

python - Webdriver phantomjs 不再跟随点击链接

转载 作者:行者123 更新时间:2023-11-30 23:18:42 28 4
gpt4 key购买 nike

我使用一个简单的 webdriver phantomjs 脚本来更新 preloved.co.uk 上的一些广告。该脚本直到最近都运行良好,但在单击登录链接后开始失败,出现“单击已提交但加载失败”错误。按照this我按照指南 here 将 phantomjs 版本更新到最新稳定版 1.9.7 。但是,现在登录点击似乎也没有注册,并且页面没有重新加载。

第一步只是进入登录表单页面。

from selenium import webdriver
br = webdriver.PhantomJS(service_log_path='/path/to/logfile.log')
url = "http://www.preloved.co.uk"
br.get(url)

# Go to login page
login_button = br.find_element_by_xpath('//div[@id="header-status-login"]/a')
login_button.click()

通常(例如,如果您将浏览器行替换为 br = webdriver.Firefox()),这会导致重新加载到登录页面,并且脚本从那里继续,但现在它出现了单击根本不会加载新页面,并且 br.current_url 仍然是 ' http://www.preloved.co.uk/ '

为什么这个负载不起作用?

即使我提取 href 并执行显式 GET,它似乎也不会遵循并重新加载:

newurl=login_button.get_attribute('href')
br.get(newurl)

br.current_url 仍然是 ' http://www.preloved.co.uk/ '.

最佳答案

登录页面通过 https 进行保护。最近,POODLE 漏洞迫使网站从 SSLv3 转向 https,但由于 PhantomJS 使用 SSLv3 per default登录页面无法加载。另请参阅this answer .

可以通过将 --ssl-protocol=tlsv1--ssl-protocol=any 传递给 PhantomJS 或将 PhantomJS 升级到至少版本 1.9.8 来修复此问题。看来 service_args 参数可以用于 Selenium 的 python 绑定(bind)中。

看起来像 current official implementation service_args 无法从 WebDriver 传递到 PhantomJS 中的 Service。您可以对其进行子类化。

from selenium import webdriver
from selenium.webdriver.phantomjs.service import Service
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver

class PhantomJSService(webdriver.PhantomJS):
def __init__(self, executable_path="phantomjs", port=0,
desired_capabilities=DesiredCapabilities.PHANTOMJS,
service_args=None, service_log_path=None):

self.service = Service(executable_path,
port=port, service_args=service_args,
log_path=service_log_path)
self.service.start()

try:
RemoteWebDriver.__init__(self,
command_executor=self.service.service_url,
desired_capabilities=desired_capabilities)
except:
self.quit()
raise

看来这个webdriver fork包含设置这些选项所需的参数。

关于python - Webdriver phantomjs 不再跟随点击链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26560833/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com