我有以下代码可以使用Selenium WebDriver启动Chrome浏览器:
import { Driver } from 'selenium-webdriver/chrome';
Driver.createSession();
console.log("I've launched!");
我遇到的问题是我想在浏览器实际成功启动后打印“我已经启动”。但是,我看到的是在Chrome实例实际启动之前,“我已启动”已打印到控制台。
如何使用createSession()
同步启动Chrome?
答案 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!");
})();