我正在编写一个脚本来自动执行某些操作。我正在用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)
知道怎么解决吗?
答案 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")