更改Watir浏览器标头

时间:2012-04-21 17:49:09

标签: watir watir-webdriver

如何使用Watir更改浏览器标题?

使用Watir时,我想更改浏览器标题(在Firefox或Chrome中)。

我了解watir-user-agent gem,但我对改变浏览器版本很感兴趣。

这可能吗?

由于

2 个答案:

答案 0 :(得分:1)

是的,这可以做到。 不幸的是,Watir似乎没有提供任何非常简单的方法来做到这一点 但是,这里有两个简单的选项:

一种。使用代理服务器。

这是一种很好理解的方法,通常可以修改标题。但是我在自动化过程中没有亲自使用它。

步骤:
1.在执行测试代码之前设置代理服务器
2.确保代理服务器将为每个请求添加所需的标头
3.然后当你的测试浏览器请求任何页面时----->代理服务器将自动添加所需的标头。

B中。使用浏览器扩展

由于Watir似乎无法单独修改标头...那么我们只要求Watir使用普通的浏览器扩展即可!
我使用Chrome和Firefox成功完成了这项工作
注意:这些步骤仅适用于指定的扩展 - 但类似的方法也适用于许多其他扩展。

Firefox步骤:
1.启动firefox
2.搜索'修改标题Firefox'使用非常受欢迎的搜索引擎......最高的结果是https://addons.mozilla.org/En-us/firefox/addon/modify-headers/
3.下载此扩展程序的.xpi文件...目前,您可以通过右键单击按钮并单击"保存链接为"
4.正常安装扩展,根据需要更改标题,关闭firefox,然后找到并保存" modifyheaders.conf" file ...此文件应位于用户文件夹中的某个位置
5.创建以下类(扩展Profile)

class FirefoxProfileWithAddedFiles < Selenium::WebDriver::Firefox::Profile

  # This method OVERRIDES the one in Profile
  # This method creates the firefox profile folder
  def layout_on_disk
    #Call the superclass layout method
    profile_directory = super
    #Add custom file
    if(!@file_to_add_to_profile.nil?)
      FileUtils.cp(@file_to_add_to_profile, profile_directory)
    end
    profile_directory
  end

  def add_file_to_profile(filepath)
    @file_to_add_to_profile = filepath
  end


6.按如下方式设置测试脚本

    ...
    #Setup Firefox Profile
    profile = Selenium::WebDriver::Firefox::Profile::FirefoxProfileWithAddedFiles.new
    profile.add_extension("SOMEPATH/modifyheaders.xpi")
    profile.add_file_to_profile("SOMEPATH/modifyheaders.conf")
    profile["modifyheaders.config.active"] = true

    #Start up Firefox
    @browser = Watir::Browser.new :firefox, :profile => profile
    ...

Chrome步骤
1.启动chrome
2.搜索&#39;修改标题Firefox&#39;使用非常受欢迎的搜索引擎......最高的结果是https://chrome.google.com/webstore/detail/modify-headers-for-google/innpjfdalfhpcoinfnehdnbkglpmogdi
3.正常安装扩展,根据需要更改标题,然后关闭chrome
4.找到解压缩的扩展文件夹并进行复制。在Windows上,文件夹将类似于......

  

C:\ Users \ MYNAME \ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Extensions \ innpjfdalfhpcoinfnehdnbkglpmogdi \ 2.0.3_0


5.找到扩展配置文件并进行复制。在Windows上,文件将类似于......

  

C:\ Users \ MYNAME \ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Local Storage \ chrome-extension_innpjfdalfhpcoinfnehdnbkglpmogdi_0.localstorage


6.按如下方式设置测试脚本:

...
#Setup Chrome Profile Folder
profile_directory = Dir.mktmpdir("webdriver-chrome-profile")
extension_configuration_folder = FileUtils.mkdir_p "#{profile_directory}/Default/Local Storage"
FileUtils.cp("PATH_TO_MY_EXTENSION_CONFIGURATION_FILE", extension_configuration_folder[0])

#Start Webdriver
@browser = Watir::Browser.new :chrome, :switches => ["--user-data-dir=#{profile_directory}", "--load-extension=#{PATH_TO_MY_UNPACKED_EXTENSION_FOLDER"]
...

答案 1 :(得分:0)

Watir在浏览器窗口内自动化浏览器,在操作系统级别进行非常有限的交互(例如响应警报等),您需要预先配置浏览器(假设可能)到您想要的内容或者使用诸如Autoit之类的工具与浏览器的操作系统级别控件进行交互来实现这一点。(假设浏览器甚至具有允许您在向浏览器和版本发出请求时更改其报告内容的功能。一个网站)

如果您使用Watir-Webdriver和Firefox,那么您可以通过设置这些参数的配置文件来执行此操作。在这种情况下,您创建配置文件,然后创建指定该配置文件的浏览器对象。它几乎是一个webdriver函数,但在创建浏览器对象时很容易访问。

创建配置文件时,请参阅this webdriver bug以了解要使用的参数(在注释中显示)。有关如何设置和使用firefox配置文件的详细信息,请参阅webdriver文档。

另一个可能有用的选项是为用户代理gem分配你自己的代码版本,并添加browser_version作为要设置的东西之一。它正在使用FF的配置文件,所以这样做应该是可能的,至少对FF来说是这样。对于Chrome,它使用用户代理开关来覆盖useragent字符串,所以它也应该是可能的,尽管你需要做一些工作来修改gem使用的固定字符串来替换具有该版本的部分你想要的那个。

然后,如果你正常工作,请发出一个拉取请求,将该增强功能添加到gem中。

或者如果你自己不了解那种事情,那么请求,恳求并提供用适当的东西贿赂宝石作者,如果他们为你扩展宝石以制作可以设置的版本之一。