Определите открытый веб-браузер с помощью ShellExecute для правильной работы с document.getElement - PullRequest
0 голосов
/ 06 августа 2020

Мне нужно автоматизировать свою работу, заполнив формы на веб-странице с помощью 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

Я прошу использовать любой из этих способов буксировки:

* работа с уже открытым веб-браузером, а не только с открытым браузером с последующим применением кода.

* Правильно определите открытый веб-браузер, чтобы применить код.

1 Ответ

1 голос
/ 06 августа 2020

Я вижу, что вы используете объект ActiveX, который поддерживается только браузером IE.

Этот объект является расширением Microsoft и поддерживается только в Inte rnet Explorer.

Если вы хотите автоматизировать другие браузеры, такие как Firefox, я предлагаю попробовать проверить веб-драйвер Selenium . Я думаю, что это более подходящий продукт для удовлетворения ваших требований.

Доступна автоматизация браузеров с использованием многих языков разработки.

Похоже, также можно получить объект уже открытый браузер.

См. здесь: Можно ли использовать Selenium для работы с уже открытым сеансом браузера?

...