ruby - 在 watir-webdriver 和 phantomjs 中设置 "Accept-Language" header

标签 ruby selenium selenium-webdriver phantomjs watir-webdriver

我正在尝试使用 watir-webdriver 访问一个站点。该站点根据“Accept-Language”请求 header 将所有内容翻译成另一种语言,结果语言错误。

我正在尝试设置 phantomjs 接受的自定义 header ( http://phantomjs.org/api/webpage/property/custom-headers.html ),如下所示:

require 'watir-webdriver'
capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs(
"phantomjs.page.settings.userAgent" => "Mozilla/5.0",
"phantomjs.page.customHeaders" => {'Accept-Language' => 'en-GB,en-US;q=0.8,en;q=0.6' }
)
b = Watir::Browser.new :phantomjs, :desired_capabilities => capabilities

测试一下:

b.goto 'http://pgl.yoyo.org/http/browser-headers.php'
File.open("/tmp/headers.html", "w") { |io|
  io.write b.html
}

结果 /tmp/headers.html 中显示的 Accept-Language header 与我指定的不匹配。我试过将它写成 json 字符串,但还是不行。

最佳答案

这对我有用:

$ phantomjs -v
1.9.2

$ gem search -l webdriver
*** LOCAL GEMS ***
selenium-webdriver (2.38.0)
watir-webdriver (0.6.4)

$ irb 

irb(main):001:0> require "watir-webdriver"
=> true

irb(main):002:0> capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs
=> #<Selenium::WebDriver::Remote::Capabilities:0x007fbbeb8faa08 @capabilities={:browser_name=>"phantomjs", :version=>"", :platform=>:any, :javascript_enabled=>true, :css_selectors_enabled=>true, :takes_screenshot=>true, :native_events=>false, :rotatable=>false, :firefox_profile=>nil, :proxy=>nil}>

irb(main):003:0> capabilities['phantomjs.page.customHeaders.Accept-Language'] = 'ru-RU'
=> "ru-RU"

irb(main):004:0> browser = Watir::Browser.new :phantomjs, desired_capabilities: capabilities
=> #<Watir::Browser:0x5be4c6adc1d41736 url="about:blank" title="">

irb(main):005:0> browser.goto "httpbin.org/headers"
=> "http://httpbin.org/headers"

irb(main):006:0> puts browser.html
<html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">{
  "headers": {
    "Accept-Encoding": "gzip",
    "User-Agent": "Mozilla/5.0 (Macintosh; PPC Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.2 Safari/534.34",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Connection": "close",
    "Accept-Language": "ru-RU",
    "Host": "httpbin.org"
  }
}</pre></body></html>
=> nil

关于ruby - 在 watir-webdriver 和 phantomjs 中设置 "Accept-Language" header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20563465/

相关文章:

ruby - Ruby 中的 Zlib 解压 .gz

python - 从产品概述菜单中的子页面获取文本

Java 加载网页并跟踪 HTML 中的更改

ruby - Chrome 的自定义配置文件

java - 如何解决线程 "main"java.lang.NoSuchFieldError : INSTANCE?中的异常

ruby-on-rails - 当客户在 ruby​​ on rails 电子商务应用程序中下订单时收到通知

ruby-on-rails - 在线价格 Amazon API

java - 如何在 webDriver 测试中将 ExpectedConditions 类与已实现的类结合起来

python - 如何使用带有 Python 的 Selenium WebDriver 获取选定的选项?

ruby-on-rails - 选择包含许多项目的标签需要时间来呈现