【问题标题】:Identify an opend Webbrowser with ShellExecute properly to work with document.getElement使用 ShellExecute 正确识别打开的 Web 浏览器以使用 document.getElementbyid
【发布时间】:2020-08-05 21:46:59
【问题描述】:

我需要通过js在网页中提交表单来自动化我的工作,我做了这样的代码:

var ie = new ActiveXObject("InternetExplorer.Application");

ie.visible = true;

ie.navigate("http://www.google.com");

while (ie.busy) WScript.Sleep(100);


ie.document.getElementsByName('q')[0].value ="3";


var Butn = ie.document.getElementsByName('btnK')[0];

 Butn.click();

但我希望这段代码可以与另一个网络浏览器(例如 Firefox)一起使用,所以我尝试了这样的方法:

var ie = new ActiveXObject("Shell.Application");
 
var commandtoRun ="C:\\Program Files\\Mozilla Firefox\\firefox.exe";

ie.ShellExecute(commandtoRun,"http://www.google.com", "1");


while (ie.busy) WScript.Sleep(100);


 ie.document.getElementsByName('q')[0].value ="3";


var Butn = ie.document.getElementsByName('btnK')[0];

 Butn.click();

但是这段代码会报错:

'ie.document' 为 null 或不是对象

800A13F

我要求以下两种方法中的任何一种:

*处理已经打开的网络浏览器,不仅打开一个然后应用代码。

*以正确的方式识别打开的网络浏览器以应用代码。

【问题讨论】:

    标签: javascript internet-explorer firefox browser


    【解决方案1】:

    我可以看到您正在使用仅受 IE 浏览器支持的 ActiveX 对象。

    此对象是 Microsoft 扩展,仅在 Internet Explorer 中受支持。

    如果您希望自动化其他浏览器(如 Firefox),我建议您尝试检查Selenium web driver。我认为它更适合满足您的要求。

    它可以使用多种开发语言自动化浏览器。

    看起来也可以获取已经打开的浏览器的对象。

    请看这里:Can we use Selenium to work with an already open browser session?

    【讨论】:

    • 谢谢@Deepak-MSFT,代码的第一部分可以完美地打开任何类型的浏览器,问题只是getelement,打开后有没有办法处理浏览器?或者是否有不同的方法来识别浏览器而不是 ActiveXobject?
    • 即使你启动浏览器,它也不会返回对象模型来访问页面上的元素。我认为 Selenium Web 驱动程序可以满足这一要求。你可以试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 2012-01-29
    • 2019-09-19
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多