我對使用 WebDriverJS 和嘗試一個簡單的腳本比較陌生。但是,我面臨很多問題,并且沒有找到任何有用的資源。
正在測驗的場景:
- 啟動瀏覽器
- 導航到 google.com
- 捕獲頁面標題
- 添加等待陳述句(driver.sleep)
- 在搜索框中輸入一些文本
這是代碼片段:
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 甚至在瀏覽器啟動之前就作為第一個陳述句執行,而這不是明確的意圖。
- 標題回傳一個空字串。沒有列印值。
- driver.sleep() 從不等待指定的持續時間。所有命令立即執行。當 driver.sleep 不作業時如何讓驅動程式硬等待?
- 嘗試添加隱式等待,但這也會導致錯誤。
- 要遵循的最佳實踐是什么?
我并沒有覺得非常許多有用的webdriver的JavaScript資源,它是不清楚如何著手。
任何指導表示贊賞。蒂亞。!
我也參考了檔案,并在那里給出了類似的步驟。不確定我的結局是否有問題。https://github.com/SeleniumHQ/selenium/wiki/WebDriverJs
uj5u.com熱心網友回復:
假設您的示例是用 JavaScript 撰寫并在 Node.js 上運行的,看起來好像您會錯過所有等待異步函式完成處理的時間。請注意,大多數函式都會回傳一個承諾,您必須等待承諾得到解決。
考慮以下示例代碼:
const {Builder, By, Key, until} = require('selenium-webdriver');
(async function example() {
let driver = await new Builder().forBrowser('firefox').build();
try {
await driver.get('http://www.google.com/ncr');
await driver.findElement(By.name('q')).sendKeys('webdriver', Key.RETURN);
await driver.wait(until.titleIs('webdriver - Google Search'), 1000);
} finally {
await driver.quit();
}
})();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/351367.html
