相关疑难解决方法(0)

等到页面加载Selenium WebDriver for Python

我想刮掉由无限滚动实现的页面的所有数据.以下python代码有效.

for i in range(100):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(5)
Run Code Online (Sandbox Code Playgroud)

这意味着每次向下滚动到底部时,我都需要等待5秒钟,这通常足以让页面完成加载新生成的内容.但是,这可能不是时间效率.页面可以在5秒内完成加载新内容.每次向下滚动时,如何检测页面是否已完成加载新内容?如果我能检测到这一点,一旦我知道页面加载完毕,我可以再次向下滚动以查看更多内容.这更节省时间.

python selenium execute-script

142
推荐指数
13
解决办法
27万
查看次数

webdriver的官方定位策略

官方W3c webdirver文档中,明确指出位置策略是:

State   Keyword
CSS selector    "css selector"
Link text selector  "link text"
Partial link text selector  "partial link text"
Tag name    "tag name"
XPath selector  "xpath"
Run Code Online (Sandbox Code Playgroud)

但是,Selenium的电线协议允许:

class name  
css selector
id  
name
link text
partial link text
tag name
xpath
Run Code Online (Sandbox Code Playgroud)

在理论中,Selenium的文档已经过时,"真实"的故事在新的规范文档中.然而...

我在最新的Chrome自己的Webdriver上运行了一些测试,我可以确认这一点,name并且class name两者都有效; 但是,它们不符合规格.

我记得在Chromium问题上阅读他们只会实现官方的Webdriver规范.

现在:我知道通用答案,其中"规格并不总是100%遵循"等.但是,我想知道的是:

  • 你能找到Chromium中实现这个的代码吗?(链接将是最受欢迎的)
  • 在Chromium邮件列表中是否有关于这些的讨论?
  • "非官方"命令("旧"硒规格文件中记录的)可能会留下来吗?你在哪里读到的?

javascript selenium google-chrome chromium chrome-web-driver

12
推荐指数
1
解决办法
5128
查看次数