如何在 Chrome DevTools 中自动切换 Sensors/Location 进行自动化测试?
How to automate switching Sensors/Location in Chrome DevTools for automated tests?
上下文
我想使用 Selenium 编写自动化测试。我的页面应该根据用户的位置正常工作。我想根据用户的位置断言不同的结果。
我想使用 Chrome DevTools 的 Sensors/Location 工具来模拟不同的位置。
问题
如何根据测试用例自动从一个位置设置切换到另一个位置设置? (我正在使用来自 C# 代码的 Selenium Chrome 驱动程序,但希望这不重要)
可以使用 Chrome 开发工具中的纬度和经度 Emulation.setGeolocationOverride
。
对于 C# Selenium 绑定,请参考 SetGeolocationOverrideCommand.cs
根据我的经验,您可能需要在调用 Emulation.setGeolocationOverride 后添加一些等待时间。因为它不会立即反映。
在Java 示例代码中:
DevTools devTools = driver.getDevTools();
devTools.createSession();
devTools.send(Emulation.setGeolocationOverride(Optional.of(35.689487), Optional.of(139.691706), Optional.of(100)))
在 Selenium/Chromedriver 日志中 它将显示如下内容:
Jun 23, 2020 4:47:28 PM org.openqa.selenium.devtools.Connection send
INFO: {
"id": 7,
"method": "Emulation.setGeolocationOverride",
"params": {
"latitude": 35.689487,
"longitude": 139.691706,
"accuracy": 100
},
"sessionId": "SDSFDF3243423434DFDFD"
}
在Java中,如果你使用的是maven,请在pom.xml
中添加以下依赖项
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-devtools -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-devtools</artifactId>
<version>4.0.0-alpha-5</version>
</dependency>
注:
可以使用 Browser.grantPermissions
向网站授予地理定位权限
Browser.grantPermissions EXPERIMENTAL #
Grant specific permissions to the given origin and reject all others.
PARAMETERS
permissions
array[ PermissionType ]
origin
string
Origin the permission applies to, all origins if not specified.
上下文
我想使用 Selenium 编写自动化测试。我的页面应该根据用户的位置正常工作。我想根据用户的位置断言不同的结果。
我想使用 Chrome DevTools 的 Sensors/Location 工具来模拟不同的位置。
问题
如何根据测试用例自动从一个位置设置切换到另一个位置设置? (我正在使用来自 C# 代码的 Selenium Chrome 驱动程序,但希望这不重要)
可以使用 Chrome 开发工具中的纬度和经度 Emulation.setGeolocationOverride
。
对于 C# Selenium 绑定,请参考 SetGeolocationOverrideCommand.cs
根据我的经验,您可能需要在调用 Emulation.setGeolocationOverride 后添加一些等待时间。因为它不会立即反映。
在Java 示例代码中:
DevTools devTools = driver.getDevTools();
devTools.createSession();
devTools.send(Emulation.setGeolocationOverride(Optional.of(35.689487), Optional.of(139.691706), Optional.of(100)))
在 Selenium/Chromedriver 日志中 它将显示如下内容:
Jun 23, 2020 4:47:28 PM org.openqa.selenium.devtools.Connection send
INFO: {
"id": 7,
"method": "Emulation.setGeolocationOverride",
"params": {
"latitude": 35.689487,
"longitude": 139.691706,
"accuracy": 100
},
"sessionId": "SDSFDF3243423434DFDFD"
}
在Java中,如果你使用的是maven,请在pom.xml
中添加以下依赖项<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-devtools -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-devtools</artifactId>
<version>4.0.0-alpha-5</version>
</dependency>
注: 可以使用 Browser.grantPermissions
向网站授予地理定位权限Browser.grantPermissions EXPERIMENTAL #
Grant specific permissions to the given origin and reject all others.
PARAMETERS
permissions
array[ PermissionType ]
origin
string
Origin the permission applies to, all origins if not specified.