如何通过Selenium Script c#将参数传递给chrome扩展?

时间:2016-04-03 18:49:38

标签: c# selenium google-chrome-extension

我正在使用名为" Mod Header"的Chrome扩展程序修改每个请求的标头。具体而言我正在通过Dynatrace Header,以便我能够捕获自动化Selenium测试的性能指标。为此,我想在Request标头中传递dynatrace头。为此,我使用Chrome扩展程序。我成功地推出了" Mod Header"使用Selenium的已启动浏览器进行扩展。发布这个我被困在如何将参数传递给此Extesnion,因为我想在标头请求中传递测试用例名称。 以下是我想传递的标题:
的dynaTrace:VU = 1; SN = SCRIPTNAME; TE =测试名; ID = 1; NA = TestLoad

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

一种方法是在您的扩展程序网址中使用搜索参数。

如果通过调用某些页面调用扩展,还可以添加

等参数
chrome-extension://efjkpoicghgloioskoepnjiniemnhcnl/index.html?param1=value1&param2=value2

答案 1 :(得分:0)

Chrome会将扩展程序的设置存储在localstorage中。 因此,自定义扩展的一种方法是首先在其上设置上下文,然后使用一段Javascript编辑localstorage。

以下是向ModHeader添加两个标头(token1和token2)的示例:

// add the ModHeader extension
var options = new ChromeOptions();
options.AddExtension(@"C:\Downloads\ModHeader_v2.0.9.crx");

// launch the browser
var driver = new ChromeDriver(options);

// set the context on the extension so the localStorage can be accessed
driver.Navigate().GoToUrl("chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/icon.png");

// setup ModHeader with two headers (token1 and token2)
driver.ExecuteScript(@"
    localStorage.setItem('profiles', JSON.stringify([{
      title: 'Selenium', hideComment: true, appendMode: '',
      headers: [
        {enabled: true, name: 'token1', value: '01234', comment: ''},
        {enabled: true, name: 'token2', value: '56789', comment: ''}
      ],
      respHeaders: [],
      filters: []
    }]));");

// visit a page
driver.Navigate().GoToUrl("http://stackoverflow.com/");