【发布时间】:2021-11-02 20:06:46
【问题描述】:
我对使用 WebDriverJS 和尝试一个简单的脚本开始比较陌生。 但是,我面临很多问题,并没有找到任何有用的资源。
正在测试的场景:
- 启动浏览器
- 导航到 google.com
- 捕获页面标题
- 添加等待语句 (driver.sleep)
- 在搜索框中输入一些文字
这是代码sn-p:
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
var driver = new webdriver.Builder().forBrowser('chrome').build();
driver.get("http://www.google.com");
driver.getTitle().then(function(title) {
console.log("Title is: " + title);
});
console.log('Before sleep');
driver.sleep(10000);
console.log('After sleep');
driver.findElement(By.name('q')).sendKeys("Hello");
这是输出:
Before sleep
After sleep
DevTools listening on ws://127.0.0.1:52449/devtools/browser/aea4d9eb-20ee-4f10-b53f-c2003c751796
Title is:
可以看出,这是一个非常直接的场景。但是,它们都没有按预期工作。
以下是我的查询/观察:
- console.log for Before/After sleep 甚至在浏览器启动之前作为第一条语句执行,但其意图并不明确。
- 标题返回一个空字符串。未打印任何值。
- driver.sleep() 从未等待指定的持续时间。所有命令都立即执行。 driver.sleep 不工作时如何让驱动程序硬等待?
- 尝试添加隐式等待,但这也导致了错误。
- 应遵循哪些最佳做法?
我确实没有找到很多有用的 webdriver javascript 资源,但不清楚如何继续。
感谢任何指导。 TIA.!
我也参考了文档,并且在那里给出了类似的步骤。不确定我是否有问题。 https://github.com/SeleniumHQ/selenium/wiki/WebDriverJs
【问题讨论】:
-
请记住,Chrome 在这里运行在一个单独的进程中。调用
driver.sleep告诉 Chrome 浏览器休眠 10 秒。它对你的 Python 进程没有任何作用。在您尝试接下来与司机交谈之前,您不会注意到任何事情。因此,您的findElement将等到浏览器再次唤醒。
标签: selenium selenium-webdriver webdriverwait