如何尽快找到元素,不要等待硒页面加载

时间:2019-04-28 09:09:27

标签: python node.js selenium selenium-webdriver

我想在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()
})()

1 个答案:

答案 0 :(得分:0)

Selenium Web驱动程序支持三种页面加载策略。

普通

这种状态导致Selenium等待整个页面加载(已下载并解析HTML内容和子资源)。

渴望

这种状态导致Selenium等待DOMContentLoaded事件(仅下载和解析html内容)。

此策略使Selenium在完全接收到初始页面内容(已下载html内容)后立即返回。


您必须将页面加载策略设置为madvise。尽管chrome不支持“ eager”,但您可以将其设置为“ none”。然后,您需要同步驱动程序等待某些元素。

Python

eager
相关问题