我想在DOMcontentLoad时使用硒尽快找到元素
findElement
如何执行不等待页面加载完成?
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until
;(async function main(){
driver =await new webdriver.Builder().forBrowser('chrome').build()
await driver.get('some url')//wait until it throw timeout error
ele=await driver.findElement(By.id('username'))
ele.sendKeys('xxx')
})()
我尝试使用
await driver.manage().setTimeouts({pageLoad:3e3,script:2e3})
但是在捕获错误之后,所有的承诺都将超时
环境
nodejs
“ selenium-webdriver”:“ ^ 4.0.0-alpha.1”
chromedriver 73.0.3683.20
最后,我的nodejs解决方案:
var {Options} = require('selenium-webdriver/chrome'),
{Builder,By,until,Capabilities}=require('selenium-webdriver'),
driver;
;(async function main(){
driver =await new Builder()
.withCapabilities(
Options.chrome().setPageLoadStrategy('none')
).build()
})()
答案 0 :(得分:0)
Selenium Web驱动程序支持三种页面加载策略。
普通
这种状态导致Selenium等待整个页面加载(已下载并解析HTML内容和子资源)。
渴望
这种状态导致Selenium等待DOMContentLoaded事件(仅下载和解析html内容)。
无
此策略使Selenium在完全接收到初始页面内容(已下载html内容)后立即返回。
您必须将页面加载策略设置为madvise
。尽管chrome不支持“ eager”,但您可以将其设置为“ none”。然后,您需要同步驱动程序等待某些元素。
Python
eager