如何使用Selenium WebDriver与createSession()同步启动Chrome?

时间:2019-09-28 19:34:26

标签: typescript selenium google-chrome selenium-webdriver

我有以下代码可以使用Selenium WebDriver启动Chrome浏览器:

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

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

我遇到的问题是我想在浏览器实际成功启动后打印“我已经启动”。但是,我看到的是在Chrome实例实际启动之前,“我已启动”已打印到控制台。

如何使用createSession()同步启动Chrome?

2 个答案:

答案 0 :(得分:2)

您可以尝试调用诸如页面标题之类的简单内容的WebDriver。

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

这将一直等到浏览器的标题为“ expectedTitleOfBrowser”,这通常需要浏览器在等待完成之前完全启动。

如果您只是开始Chrome会话,而实际上并没有导航到任何地方,则标题将类似于data;Untitled之类。

答案 1 :(得分:0)

我发现等待浏览器启动的一种非常可靠的方法是等待会话解决。因此,完整的代码将变为:

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!");
})();