Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Java+Selenide+Chrome, отключение геолокации

geolocation
chrome
java
webdriver
selenide
options
Теги: #<Tag:0x00007fedb92dcc20> #<Tag:0x00007fedb92dcae0> #<Tag:0x00007fedb92dc9a0> #<Tag:0x00007fedb92dc860> #<Tag:0x00007fedb92dc720> #<Tag:0x00007fedb92dc5b8>

(Валерия Кабаева) #1

Вопрос из разряда “Помогите зеленому новичку, который ничего в этом не понимает”.

Задача состоит в следующем: открывается браузер, открывается сайт, который может запрашивать подтверждение геолокации. При этом сам попап с разрешением не появляется, геолокация автоматом разрешена.
Надо же сделать так, чтобы либо появлялся попап (который можно проигнорировать), либо геолокация автоматом запрещалась.

Были попытки задать запрет на геолокацию через:

Configuration.browserCapabilities new DesiredCapabilities();
Configuration.browserCapabilities.setCapability("locationContextEnabled", false);

Так же создавался отдельный профиль в хроме с отключенной локацией:

ChromeOptions profile = new ChromeOptions();
profile.addArguments("/workspace/project/chrome-profile/WithoutGeo");

Но то ли лыжи не едут (с)…
В общем, каждый раз хром все равно запускается дефолтный, геолокация включена.
Подозреваю, что я либо не тот метод использую, либо другие конфигурации как-то конфликтуют с этими.

Исходный тест (без запрета локации) выглядит так:

import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.junit.TextReport;
import org.junit.*;
import org.junit.rules.TestRule;
import org.openqa.selenium.By;
import utils.ConfigProperties;
import static com.codeborne.selenide.Selenide.*;
import static com.codeborne.selenide.Condition.*;
import static com.codeborne.selenide.WebDriverRunner.closeWebDriver;

public class AuthorizationValidTest {

    @Before
    public void setUp() throws Exception {
        Configuration.browser = ConfigProperties.getTestProperty("browser");
        Configuration.browserSize = ConfigProperties.getTestProperty("browserSize");
        Configuration.timeout = 10000;
        Configuration.collectionsTimeout = 10000;
    }

    @Rule
    public TestRule report = new TextReport()
            .onFailedTest(true)
            .onSucceededTest(true);

    @Test
    public void Test() throws Exception {

        //открыть сайт, с авторизацией
        open(ConfigProperties.getTestProperty("url"));
}

Собственно, и что с этим со всем делать?


(Vasiliy Rakshin) #2

В сетапе вам надо создать новый драйвер и передать ему капабилити или профиль что вы выше сами и привели для примера. Правда, в последних версиях уже отказываются от применения капабилити, вам надо профиль добавлять через опции. Что-то типа:
WebDriverRunner.setWebDriver(new ChromeDriver(options));

Либо, чтобы не создавать самому новый драйвер, надо использовать
static org.openqa.selenium.remote.DesiredCapabilities - http://selenide.org/javadoc/current/com/codeborne/selenide/Configuration.html#browserCapabilities


(Борис Осипов) #3

@Shax это известное ишью https://github.com/codeborne/selenide/issues/676


(Валерия Кабаева) #4

@BabyRoot, @osipov_boris
Спасибо, буду раскуривать.