【问题标题】:using a proxy with phantomjs in selenium webdriver在 selenium webdriver 中使用带有 phantomjs 的代理
【发布时间】:2013-06-25 07:08:54
【问题描述】:

我正在尝试在 selenium webdriver (2.25) 的 ruby​​ (1.8.7) 脚本中使用 PhantomJS 1.9.1 配置代理。

我看到了几个使用 Firefox 的例子,我用这个浏览器成功地做到了。我使用了这段代码:

profile = Selenium::WebDriver::Firefox::Profile.new
    profile.proxy = Selenium::WebDriver::Proxy.new :ssl => 'chronos.landebitel.local:3128'
    $browser = Watir::Browser.new :firefox, :profile => profile

但我找不到 phantomjs 的任何示例。我搜索并尝试了许多解决方案,但没有一个有效。

谁能给我一个例子来帮助我?

【问题讨论】:

    标签: ruby selenium proxy phantomjs


    【解决方案1】:

    试试:

    Watir::Browser.new( :phantomjs,
        args: '--proxy=localhost:8181'
    )
    

    【讨论】:

    • 似乎对我有用的唯一解决方案,谢谢。
    • 用新版本的 phantomjs 更新 driver_opts 替换为 args
    • @ThienSuBS 给了我一个undefined method key?'` 错误。在答案中使用args 不会给我一个错误,但根本不起作用。
    • @confetti 你有没有尝试过这样的事情:Watir::Browser.new( :phantomjs, drive_opts: { args: ['--proxy=localhost:8181']} )
    【解决方案2】:

    除了将代理传递给 phantomjs 之外,如果代理需要身份验证,您还可以传递用户名和密码。只需将所需的选项作为字符串数组传递。

    值得注意的是,phantomjs 以这种方式支持代理身份验证,而 chromedriver 不支持(无论如何,截至 2013 年 7 月);它要求您在交互式 UI 中输入身份验证。

    switches = ['--proxy=69.106.88.7:60199', '--proxy-auth=username:password123']
    browser = Watir::Browser.new :phantomjs, :args => switches
    

    【讨论】:

    • 用 driver_opts 替换 args
    【解决方案3】:

    经过多年的搜索(真的)

    args = ['--ssl-protocol=tlsv1', "--proxy=ip:port", '--proxy-auth=username:password']
    capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs("phantomjs.page.settings.userAgent" => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36")
    driver = Selenium::WebDriver.for :phantomjs, :desired_capabilities => capabilities, :args => args
    @browser = ::Watir::Browser.new driver
    

    【讨论】:

    • 谢谢。从字面上看,此页面上或其他任何地方都没有其他工作。我不知道为什么它必须如此复杂,但这实际上对我来说可以禁用图像。
    【解决方案4】:

    如果您看到此警告WARN Selenium [DEPRECATION] :args is deprecated. Pass switches using driver_opts,则您仍处于旧版本。 args: proxy_arguments 在新版本中已弃用。

    这是你需要的

    Watir::Browser.new :phantomjs, driver_opts: { args: proxy_arguments }
    

    【讨论】:

      【解决方案5】:

      感谢您的回答。我刚从假期回来,我的问题现在已经解决了。

      我用这个选项启动 PhantomJS:

      phantomjs --webdriver=777 --proxy=serveur_proxy:8080 --proxy-auth=user:password --proxy-type=http 
      

      在我的终端和这一行:

      $browser = Watir::Browser.new(:remote, :url => "http://localhost:777")
      

      在我的脚本中,它的工作

      【讨论】:

      • --webdriver 指定监听的端口。如果端口号低于 1024,则需要升级权限才能启动 phantomjs。所以我推荐一个高于1024的端口号。
      猜你喜欢
      • 2016-12-05
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多