所以我有这个函数从网页返回一个值。这个问题是,当我单步运行它时,它运行得很好,但是当我正常运行它时会返回另一个值并跳过Cargar
。这是代码:
Private Sub Cargar()
Do Until objIE.Busy = False And objIE.readyState = 4
DoEvents
Loop
End Sub
我正在用这个子测试:
body
当我单步运行它时,它返回“15%”,并在sub中传递参数,而当我使用任何给定参数正常运行时,它只返回“%”。知道为什么会这样吗?任何帮助将不胜感激。
注意: <input type="text" size="128" name="body" value="{{old('body')}}" />
被定义为公共变量,但到目前为止这并没有给我带来任何不便,因为我有其他功能可以在不同的网站上正常工作。此外,// conf.js
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['spec.js'],
capabilities: {
browserName: 'chrome'
}
}
// spec.js
describe('Protractor Demo App', function() {
it('should have a title', function() {
browser.get('http://juliemr.github.io/protractor-demo/');
expect(browser.getTitle()).toEqual('Super Calculator');
});
});
{
// launch.json
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/spec.js"
}
]
}
通常是“等待页面加载”指令。
export interface SmartType {
type: string;
[x: string]: any;
}
答案 0 :(得分:1)
在尝试从网页上抓取对象之前,应确保网页已完全加载。包含Application.Wait
的行不会为您执行此操作。
将此子添加到您的模块中:
Sub ieBusy(ByVal ieObj As InternetExplorer)
Do While ieObj.Busy Or ieObj.readyState < 4
DoEvents
Loop
End Sub
然后将Application.Wait
的行替换为:ieBusy objIE
答案 1 :(得分:1)
因此,在将代码弄乱了几个小时并意识到这一点之后,遗憾的是,解决方案并不像修复Cargar
Load IE sub那样简单(因为页面没有“加载”,因为它是JavaScript驱动的) ,我发现这是解决方案:
For Each t In objIE.document.getElementsByTagName("tr")
DoEvents 'Holy fix
If t.className = "domino-viewentry" Then
temp = t.Children(8).innerText
End If
Next
我很不确定为什么要修复它,并在用msgboxes检查代码的哪些部分没有正确运行时想出了这个,并且循环内的msgbox也修复了它。我很感激您对此为何起作用的评论。