Selenium Wrapper没有得到正确的html源页面

时间:2016-01-17 20:09:55

标签: ajax vba excel-vba selenium selenium-webdriver

我正在编写一个脚本来自动执行某些操作。我正在用Selenium Wrapper(chrome)打开一个页面然后等待5秒(页面有一些javascript / ajax,它会改变页面),然后我要求源代码。我得到的初始html没有js和ajax更改(如果我手动转到导航器并右键单击 - >源代码我得到了正确的源代码)。

我的VBA代码是:

Dim selenium As New SeleniumWrapper.WebDriver

selenium.Start "chrome", "http://about:blank"
selenium.setTimeout ("120000")
selenium.setImplicitWait (5000)
intRowPosition = 2
selenium.Open "http://www.somepage.com/%3Fstart%3D1"
selenium.sleep ("5000")

msgbox(selenium.getHtmlSource)

知道怎么解决吗?

2 个答案:

答案 0 :(得分:0)

getPageSource的文档,明确说明

  

如果页面在加载后已被修改(例如,通过Javascript),则无法保证返回的文本是已修改页面的文本。

然而,这也可能是由于同步问题。我不熟悉VBA框架,因此我不知道它是否具有等效的explicit wait,但如果确实如此,那么最好等待仅在页面完全加载(" js和ajax更改"正如您所期望的那样)而不是" sleep"这并不保证在等待结束时页面已准备就绪。

答案 1 :(得分:0)

不推荐使用SeleniumWrapper,不再支持。 它已被SeleniumBasic取代: https://github.com/florentbr/SeleniumBasic/releases/latest

获取页面来源:

Dim driver As New ChromeDriver
driver.Get "https://en.wikipedia.org"

MsgBox driver.PageSource
MsgBox driver.ExecuteScript("return document.documentElement.innerHTML")
MsgBox driver.ExecuteScript("return document.body.innerHTML")