【问题标题】:selenium.webdriver.firefox.options - what is it about?selenium.webdriver.firefox.options - 它是关于什么的?
【发布时间】:2019-03-17 02:56:33
【问题描述】:

我在看这段代码:

#! python3
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
opts = Options()
opts.set_headless()
assert opts.headless # Operating in headless mode
browser = Firefox(options=opts)
browser.get('https://duckduckgo.com')

来源:https://realpython.com/modern-web-automation-with-python-and-selenium/

这个想法是调用一个无头浏览器,但我不明白这段代码背后的逻辑。什么是“选项”,什么是“选项”?他们具体做什么? options=opts 代表什么?

现在尝试运行此代码,网页duckduckgo 将无法打开。知道为什么吗?

【问题讨论】:

  • 我建议您查看selenium 文档。
  • 我做了,我觉得解释得不是很好:selenium-python.readthedocs.io/…
  • 注意,使用“headless”,您不会看到打开的浏览器窗口。如果你想看节目导航,不要设置无头选项。

标签: python python-3.x selenium webdriver options


【解决方案1】:

Options 是 selenium firefox webdriver 包中的一个类。 opts 是为程序实例化的 Options 类的一个实例。

当代码说:

opts = Options()

Python 创建一个类的实例,并使用变量 opts 作为访问点。

当代码说:

opts.set_headless()

Python 正在更新 Options 的实例,以存储“此用户想要启动浏览器的无头实例”的信息

当代码说:

browser = Firefox(options=opts)

Python 正在创建 Firefox 类的实例,并向其发送 opts 变量以配置新实例。在这种情况下,唯一从默认值修改的选项是无头标志。

【讨论】:

  • 谢谢。一个很好的解释!这些都不能在文档中找到,这就是为什么我需要有人向我解释这一点 - 一步一步。
  • 唐西蒙(和其他任何人),你能看到我编辑的帖子吗?由于某种原因,此代码不起作用,它无法打开网站。
  • 您可以尝试使用 url http://www.duckduckgo.com 这样您就不用担心加密问题,也不会重定向。您收到错误消息了吗?
  • set_headless 方法已弃用,请改用opts.headless = Trueselenium-python.readthedocs.io/api.html
【解决方案2】:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
import time

#--| Setup
options = Options()
options.add_argument("--headless")
caps = webdriver.DesiredCapabilities().FIREFOX
caps["marionette"] = True
browser = webdriver.Firefox(firefox_options=options, capabilities=caps, executable_path=r"geckodriver.exe")
#--| Parse
browser.get('https://duckduckgo.com')
logo = browser.find_elements_by_css_selector('#logo_homepage_link')
print(logo[0].text)

这段代码有效(给出输出About DuckDuckGo)。我被告知 opts.set_headless() 已被弃用,也许这就是它没有给我任何结果的原因。

【讨论】:

    猜你喜欢
    • 2022-08-12
    • 2011-05-28
    • 2018-05-12
    • 1970-01-01
    • 2011-09-03
    • 2017-10-23
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多