Автоматизация браузера: Python + использование Firefox PyXPCOM

Это можно сделать с помощью метода сна Java. Я протестировал его в FF и IE, и он не блокирует компьютер, не проверяет ресурсы и не вызывает бесконечные попадания на сервер. Мне кажется, это чистое решение.

Сначала вы должны загрузить Java на страницу и сделать ее методы доступными. Для этого я сделал следующее:

<html>
<head>

<script type="text/javascript">

  function load() {
    var appletRef = document.getElementById("app");
    window.java = appletRef.Packages.java;
  } // endfunction

</script>

<body onLoad="load()">

<embed id="app" code="java.applet.Applet" type="application/x-java-applet" MAYSCRIPT="true" width="0" height="0" />

Затем все, что вам нужно сделать, когда вы хотите безболезненную паузу в вашем JS, это:

java.lang.Thread.sleep(xxx)

Где xxx - время в миллисекундах. , В моем случае (для обоснования) это было частью выполнения внутреннего заказа в очень маленькой компании, и мне нужно было распечатать счет, который должен был быть загружен с сервера. Я сделал это, загрузив счет (как веб-страницу) в iFrame, а затем распечатал iFrame. Конечно, мне пришлось ждать полной загрузки страницы, прежде чем я смог распечатать, поэтому JS пришлось сделать паузу. Я достиг этого, заставив страницу накладной (в iFrame) изменить скрытое поле формы на родительской странице с помощью события onLoad. И код на родительской странице для печати счета-фактуры выглядел следующим образом (несущественные части вырезаны для ясности):

var isReady = eval('document.batchForm.ready');
isReady.value=0;

frames['rpc_frame'].location.href=url;

while (isReady.value==0) {
  java.lang.Thread.sleep(250);
} // endwhile

window.frames['rpc_frame'].focus();
window.frames['rpc_frame'].print();

Таким образом, пользователь нажимает кнопку, скрипт загружает страницу счета, затем ждет, проверяя каждый четверть секунды, чтобы увидеть, закончилась ли загрузка страницы счета-фактуры, а затем всплывающее диалоговое окно печати, чтобы пользователь мог отправить ее на принтер. Что и требовалось доказать.

5
задан George 24 June 2009 в 23:07
поделиться

3 ответа

Я использовал webdriver с firefox. Я был очень доволен.

Что касается примеров кода, это поможет вам начать работу.

10
ответ дан 18 December 2019 в 10:48
поделиться

Если вы тестируете веб-приложение и хотите написать для этого Python, ознакомьтесь с Selenium RC , чтобы вы могли использовать один и тот же API для всех браузеров.

2
ответ дан 18 December 2019 в 10:48
поделиться

Насколько я понимаю, PyXPCOM состоит в том, что он предназначен для создания и доступа к компонентам XPCOM, а не для управления существующими. Вы, возможно, вообще не сможете сделать это с помощью PyXPCOM, согласно Марку Хаммонду, первоначальному автору:

Это просто не то, что пытается сделать XPCOM. Я не уверен, имеет ли Mozilla / Firefox сейчас или разрабатывает COM или какой-либо другой механизм «автоматизации».

и:

Если под «автоматизацией» вы имеете в виду «управление Mozilla через удаленный процесс через xpcom» , то, насколько мне известно, это невозможно

Вместо этого вы можете взглянуть на предложенный ранее проект Webdriver, Windmill или MozMill , оба из которые поддерживают автоматизацию Firefox / Gecko / XULRunner через Python.

4
ответ дан 18 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: