Webdriver - Firefox 设置地理位置信息相关测试

转载 2015年11月19日 18:29:01


Webdriver - Firefox 设置地理位置信息相关测试

作者:

时间: 2015/11


Faking Geolocation in Selenium WebDriver with Firefox


I recently worked on some Selenium WebDriver tests that needed to provide a Geolocation to a HTML5 site so it could display some results. There’s a couple of things to keep in mind when doing this:

  1. There are two Firefox about:config preferences that you must both set in your WebDriver Firefox profile to always supply the Geolocation information to your test (instead of displaying a prompt). These are:
    1. set ‘geo.prompt.testing’ to true
    2. set ‘geo.prompt.testing.allow’ to true
  2. If you want to use a specific location you need to override an about:config preference to a JSON file containing that location. This is only supported in very recent versions of Firefox (I tested version 31). Whilst this can bemanually done using a data:application/json string, Firefox using WebDriver in C# completely ignores this so the workaround is to create a JSON file with the location and reference using using a file:/// prefix
    1. Create C:\Dev\Brussels.json etc containing something like:
      {
          "status": "OK",
          "accuracy": 10.0,
          "location": {
              "lat": 50.850780,
              "lng": 4.358138,
              "latitude": 50.850780,
              "longitude": 4.358138,
              "accuracy": 10.0
          }
      }
    2. set ‘geo.wifi.uri’ to ‘file:///C:/Dev/brussels.json’ (or wherever your file is)

Once you’ve done this you should be able to test Geolocation without seeing the prompt or being able to completely override the location. Some example C# WebDriver scripts are below.

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;

namespace GeoLocation.Tests.Acceptance
{
    [TestClass]
    public class WebDriverGeoLocation
    {
        [TestMethod]
        public void CanOverrideLocationInNewerVersionsOfFirefoxLike31()
        {
            var profile = new FirefoxProfile {EnableNativeEvents = false};
            profile.SetPreference("geo.prompt.testing", true);
            profile.SetPreference("geo.prompt.testing.allow", true);
            profile.SetPreference("geo.wifi.uri", "file:///C:/Dev/brussels.json");
            var driver = new FirefoxDriver(profile);
            driver.Navigate().GoToUrl("http://html5demos.com/geo");
            new WebDriverWait(driver, TimeSpan.FromSeconds(15)).Until(ExpectedConditions.ElementExists((By.ClassName("success"))));
            Assert.AreEqual("found you!", driver.FindElement(By.Id("status")).Text);
            driver.Close();
        }

        [TestMethod]
        public void CantOverrideLocationInOlderVersionsOfFirefoxLike24()
        {
            var profile = new FirefoxProfile { EnableNativeEvents = false };
            profile.SetPreference("geo.prompt.testing", true);
            profile.SetPreference("geo.prompt.testing.allow", true);
            var driver = new FirefoxDriver(profile);
            driver.Navigate().GoToUrl("http://html5demos.com/geo");
            new WebDriverWait(driver, TimeSpan.FromSeconds(15)).Until(ExpectedConditions.ElementExists((By.ClassName("success"))));
            Assert.AreEqual("found you!", driver.FindElement(By.Id("status")).Text);
            driver.Close();
        }
    }
}

Enjoy your Geolocation testing!


原文:http://watirmelon.com/2014/09/18/faking-geolocation-in-selenium-webdriver-with-firefox/


webdriver-使用自定义的firefox配置

一般启动firefox driver,使用如下代码WebDriver driver = new FirefoxDriver();这样启动的firefox,会是一个全新的driver,不带任何的插件。一...
  • zhuleicsdn
  • zhuleicsdn
  • 2016年01月19日 16:47
  • 1293

webdriver操作火狐浏览器的属性配置

package com.gloryroad.Demo; import org.junit.Before; import org.openqa.selenium.JavascriptExec...
  • douyunqian668
  • douyunqian668
  • 2017年03月27日 14:28
  • 472

WebDriver配置Firefox代理服务器

这玩意儿网上很多,但是坑更多,现在记录一个肯定能用的。 我的环境是Python 2.6 + Selenium 2.6 from selenium import webdriver ...
  • starstarstone
  • starstarstone
  • 2013年05月21日 14:49
  • 1933

Webdriver设置Firefox自动下载

看到很多人在firefox上操作下载窗口用autoit,太麻烦了,提供一种用profile来解决的办法: FirefoxProfile profile = new FirefoxProfile();...
  • wanglha
  • wanglha
  • 2015年03月31日 15:19
  • 967

selenium webdriver 以署理proxy方式启动firefox,ie,chrome

本文是在Webdriver 2.12.0下面测试得到的结论2. webdriver的maven配置    selenium selenium ;/url> org.seleniumhq.s...
  • xiaomin1991222
  • xiaomin1991222
  • 2016年03月10日 16:05
  • 3448

Selenium-webdriver系列教程(16)————为firefox设置代理

下面的代码可以帮助你实现firefox测试运行时代理配置的功能。大概的思路是通过设置profile对象来进行配置。 [ruby] view plaincopyprint? pr...
  • wanglha
  • wanglha
  • 2014年11月06日 11:26
  • 1381

selenium webdriver调起新版Firefox

学习selenium时配置的环境是: selenium 3.7.1 Firefox 57.0 均为较新版本,写TestNG时照旧driver = new FirefoxDriver(); 发现报...
  • qq_36184009
  • qq_36184009
  • 2017年11月26日 12:12
  • 517

如何得到Selenium2/Webdriver: FirefoxProfile设置属性的key-value

FirefoxProfile profile = new FirefoxProfile(); //设置下载文件放置路径,注意如果是windows环境一定要用\\,用/不行 profile.s...
  • qiyueqinglian
  • qiyueqinglian
  • 2014年07月02日 11:54
  • 1345

Webdriver Selenium与Firefox 版本兼容

1.Selenium-java 2.45.0与 Firefox 36.0.1 兼容 2.Firefox 历史版本地址: http://ftp.mozilla.org/pub/firefox/relea...
  • com542948180
  • com542948180
  • 2017年06月21日 10:36
  • 1227

selenium(webdriver)学习笔记2--打开指定路径的firefox

//打开默认路径的firefor(C:\Program Files (x86)\Mozilla Firefox\firefox.exe) WebDriver diver = new FirefoxDr...
  • qiyueqinglian
  • qiyueqinglian
  • 2015年08月18日 18:34
  • 4779
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Webdriver - Firefox 设置地理位置信息相关测试
举报原因:
原因补充:

(最多只允许输入30个字)