項目場景:
最近在用selenium-webdriver+nodejs為自己的項目寫一個自動登錄、自動跳轉(zhuǎn)頁面的自動化工具,減少開發(fā)環(huán)境中切換不同賬號時,頻繁操作的目的。(特殊環(huán)境,瀏覽器不允許打開密碼記錄功能)
網(wǎng)絡(luò)上大部分是python或者java的項目,作為前端,當(dāng)然要選擇nodejs。
問題描述
例如:登錄后,點擊某個頁面時,報錯找不到選擇器元素。
報錯信息如下:
UnhandledPromiseRejectionWarning: NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"[title="xxx"]"}
原因分析:
分析原因,大概率是點擊登錄后,頁面還沒有加載完畢,所以簡單地調(diào)用屬性選擇器無法選中相應(yīng)屬性。
解決方案:
這里先分享一下2022年11月2日下載的selenium中,css屬性選擇器寫法,與網(wǎng)上一些老版本略有不同:
let dangerWorkTab = driver.findElement(By.css('[title="危險作業(yè)"]'))
查閱官網(wǎng)可知,nodejs版等待語法demo為:
let ele = await driver.wait(until.elementLocated(By.css('p')),10000);
let foo = await ele.getText();
assert(foo == "Hello from JavaScript");
參考官網(wǎng),改造自己的選擇器:文章來源:http://www.zghlxwxcb.cn/news/detail-739076.html
const {Builder, By,until} = require('selenium-webdriver') //別忘了吧untile工具引入進(jìn)來
代碼省略……
let dangerWorkTab =await driver.wait(until.elementLocated(By.css('[title="危險作業(yè)"]')),10000);
dangerWorkTab.click()
這里的時間參數(shù)’10000’應(yīng)該是設(shè)置的最長超出時間,因為項目中的動作是連續(xù)的。文章來源地址http://www.zghlxwxcb.cn/news/detail-739076.html
到了這里,關(guān)于selenium-webdriver+nodejs等待頁面加載完畢后執(zhí)行后續(xù)動作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!