我试图通过vba单击一个按钮,但它告诉我“对象不支持此属性或方法”。
我的VBA代码现在是:
<button class="qm_historyTab_GoButton" type="submit" style="font:normal 11px tahoma,arial,helvetica,sans serif;">
<span class="qm_historyTab_GoButtonText">GO</span>
</button>
按钮的HTML是:
import { Injectable } from '@angular/core';
import { Http, Response, Headers } from '@angular/http';
import 'rxjs/add/operator/map';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/throw';
import 'rxjs/add/operator/catch';
@Injectable()
export class ExampleService {
headers: Headers;
constructor(private http: Http) {
this.headers = new Headers();
this.headers.append('Content-Type', 'application/json; charset=utf-8');
this.headers.append('Accepts', '*/*');
// this.headers.append()
}
service1() {
let url = 'http://example.com/products';
return this.http.get(url, this.headers).map((resp: Response) => {
console.log('resp status', resp.status);
return resp.json();
}).catch((resp: Response) => {
let details = resp.json();
console.log(resp.status); // here you get the error code in your case 401
return Observable.throw(details);
});
}
}
答案 0 :(得分:1)
试试这个:
IE.document.getElementsByTagName("button") _
.getelementsByClassName("qm_historyTab_GoButton")(0).Click
两个getXXX
方法都会返回一个项目集合(即使文档中只有一个匹配项),所以要解决上一个项目中的单个项目,以便点击它需要添加(0)
编辑:如果目的是提交表单,那么这也将有效
IE.document.getElementById("qm_historyForm_7871").submit
或者只有一个带有该类名的按钮:
IE.document.getElementsByClassName("qm_historyTab_GoButton")(0).Click
答案 1 :(得分:0)
好的,所以我在这个特定的例子中找到了解决方案。该按钮是提交类型,使用HTMLInputElement发送消息。
我需要做的是在我的参考资料中添加“Microsoft HTML Object Library”并使用这些功能。
我必须创建发送响应的变量:
Dim htmlInput As MSHTML.HTMLInputElement
我无法弄清楚如何单独引用这个特定元素,所以我用它的类名抓取了所有内容。
For Each htmlInput In IE.document.getElementsByClassName("qm_historyTab_GoButton")
If Trim(htmlInput.Type) = "submit" Then
htmlInput.Click
Exit For
End If
Next htmlInput
然后我让程序循环浏览系列中的每个项目并发送提交响应。因为这是唯一一个有班级名字的人,所以我很幸运。
无论如何,这就是我解决问题的方法。