Как запустить Chrome с помощью Selenium WebDriver синхронно с createSession ()? - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть следующий код, который запускает браузер Chrome с использованием Selenium WebDriver:

import { Driver } from 'selenium-webdriver/chrome';

Driver.createSession();
console.log("I've launched!");

Проблема, с которой я сталкиваюсь, заключается в том, что я хочу напечатать "Я запустил" ПОСЛЕ браузерафактически успешно запущен.Тем не менее, я вижу, что «я запустил» выводится на консоль ДО того, как экземпляр Chrome будет запущен.

Как я могу запустить Chrome синхронно, используя createSession()?

Ответы [ 2 ]

2 голосов
/ 29 сентября 2019

Вы могли бы попытаться вызвать ожидание WebDriver на чем-то простом, например, на заголовке страницы.

wait = WebDriverWait(driver, 10)
wait.until(EC.title_contains("expectedTitleOfBrowser"))

Это будет ждать, пока заголовок браузера не будет «Ожидаемый заголовок», что обычно требует, чтобы браузер полностью запустилсядо завершения ожидания.

Если вы только начинаете сеанс Chrome и фактически нигде не перемещаетесь, заголовок будет выглядеть как data; или Untitled.

0 голосов
/ 29 сентября 2019

Я обнаружил, что очень надежный метод ожидания запуска браузера - ожидание завершения сеанса.Таким образом, полный код становится:

import { Session } from 'selenium-webdriver';
import { Driver } from 'selenium-webdriver/chrome';

(async function example() {
    let driver: Driver = Driver.createSession();

    // Wait for the browser to be launched
    let session: Session = await driver.getSession();

    console.log("I've launched!");
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...