-1

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

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

我知道 watir-user-agent gem,但我有兴趣更改浏览器版本。

那可能吗?

谢谢

4

2 回答 2

1

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

A. 使用代理服务器。

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

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

B. 使用浏览器扩展

由于 Watir 似乎无法自行修改标头......所以我们只要求 Watir 使用可以的普通浏览器扩展!
我已经使用 Chrome 和 firefox 成功完成了此操作
注意:这些步骤仅适用于指定的扩展 - 但类似的方法也适用于许多其他扩展。

Firefox 步骤:
1. 启动 firefox
2. 使用非常流行的搜索引擎搜索“Modify Headers Firefox” .... 最高结果是https://addons.mozilla.org/En-us/firefox/addon/modify- headers/
3. 下载此扩展名的 .xpi 文件...目前您可以通过右键单击按钮并单击“将链接另存为”来执行此操作
4. 正常安装扩展名,根据需要更改标题,关闭 firefox ,然后找到并保存“modifyheaders.conf”文件...该文件应该在您的用户文件夹中的某个位置
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. 使用非常流行的搜索引擎搜索“Modify Headers Firefox”....顶部结果是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"]
...
于 2015-09-22T11:33:23.647 回答
0

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

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

在创建配置文件时,请参阅此 webdriver 错误以了解要使用的参数(在评论中)。有关如何设置和使用 firefox 配置文件的更多信息,请参阅 webdriver 文档。

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

然后,如果您让它工作,请发出拉取请求以将该增强功能添加到 gem..

或者,如果您自己不擅长这种事情,那么请求、恳求并提议用适当的东西贿赂 gem 作者,如果他们愿意为您扩展 gem 以制作可以设置的东西的版本之一。

于 2012-04-24T21:40:13.973 回答