Подскажите, корректное ли поведение у браузеров Chrome и FireFox

Есть тест: при подтверждении Алерта, в указанном поле должна появиться ссылка, на которую нужно перейти. В зависимости от кол-ва данных, ссылка может генерироваться от 5 - 60 сек

@Test
    public void сheck(){
        open("http://test.test");
        switchTo().alert().accept();
        $x("//*[@id=\"listform\"]/table[1]/tbody/tr[24]/td/a").click();		
	}

Когда тест запускаю с помощью chrome, то хром ждет пока появится элемент ("//*[@id=“listform”]/table[1]/tbody/tr[24]/td/a"). Затем нажимает на ссылку.

Когда тест запускаю через FireFox:

@BeforeTest
    public void openFireFox(){
        Configuration.browser = "firefox";
    }	
	@Test
    public void сheck(){
        open("http://test.test");
        switchTo().alert().accept();
        $x("//*[@id=\"listform\"]/table[1]/tbody/tr[24]/td/a").click();		
	}

то тест “падает” с Ошибкой Timeout:

Element not found {By.xpath: //*[@id="listform"]/table[1]/tbody/tr[24]/td/a}
Expected: visible or transparent: visible or have css value opacity=0
Timeout: 4 s.
Caused by: NoSuchElementException: Unable to locate element: //*[@id="listform"]/table[1]/tbody/tr[24]/td/a

Альтернативу решению нашел, добавив ожидание элемента:

$x("//*[@id=\"listform\"]/table[1]/tbody/tr[24]/td/a").waitUntil(Condition.visible, 30000);

Но возникает вопрос - эта разница браузеров в ожидании элементов, связана с самими браузерами? (т. е. каждый браузер себя ведет по разному в плане ожидания элементов) и решение является - добавлять ожидание элементов в FF. Или дело не в браузерах, а это я что-то делаю неверно?

Использование .waitUntil в моем случае, наверно, не вариант, т. к. задержки могу быть до 60 сек. а иногда и больше. есть ли ограничения у .waitUntil по времени?

  1. У меня ещё вопрос вдогонку. К линуксоидам. “с коробки” selenid`a по дефолту запускается Crome браузер, подскажите, где я могу сконфигурировать, чтоб по дефолту запускался FireFox?
    Тесты пишу на ОС Linux. в ~/.bashrc посмотрел не нашел PATH на chrome-driver. где ещё могу быть пути в linux на chrome-driver, чтоб их использовал selenide? в линуксе не силен… Может как вариант подскажите, где могу посмотреть логи IntelliJ IDEA во время запуска теста, когда запускается дефолтный chrome, может там увижу путь, откуда он запускается, чтоб удалить PATH?

пишу тесты используя Linux + java + selenide + testng

Спасибо!

  1. Тут может быть несколько факторов вместе и влияние браузера, а так же сети, или загрузки самого сервера что отвечает на ваши запросы.
    По умолчанию, у селенида стандартное время ожидания элемента - 4 секунды, вы можете его увеличить для своих нужд: -Dselenide.timeout=4000
    1.1 Ожидание .waitUntil очень полезно когда время ожидания выходит за рамки стандартных 4 секунд, так что вы правильно думаете его использовать, и можно ставить и 60-90 секунд, главное что бы это максимальное время было обосновано с точки зрения бизнеса. Если время загрузки ссылки большое, то можно сделать тикет на оптимизацию этой части приложения, если это будет сильно мешать работе конечному пользователю

  2. Запуск браузеров контролируется настройкой -Dselenide.browser=firefox
    2.1 Все настройки по умолчанию можно посмотреть тут: com.​codeborne.​selenide.​Configuration

1 лайк