Используйте Java-объект в Perl

1

Сценарий:

существует класс java, приведенный ниже:

public class TestSelenium {
    public void googleTest() throws Exception {     
       WebDriver driver = new InternetExplorerDriver();
       driver.get("http://www.google.com/webhp?complete=1&hl=en");
    }
}

Существует программа perl, которая использует модуль Inline :: Java для вызова класса googleTest класса java, написанного выше. Программа Perl выглядит.

use warnings;
use Selenium::Remote::Driver;

use Inline Java => 'STUDY',

CLASSPATH => 'C:\selenium\selenium-java-2.37.0\selenium-2.37.0\libs\selenium-java-2.37.0.jar;C:\selenium\SeleniumTestPoc\bin\MyJar.jar;C:\selenium\selenium-java-2.37.0\selenium-2.37.0\libs\selenium-server-standalone-2.37.0.jar',

STUDY => ['TestSelenium'];

$test= TestSelenium->new;

$test->googleTest;

Теперь вышеуказанный код Perl откроет IExplorer и перейдите на страницу google.com. В моей программе Perl далее $test-> googleTest; Я хочу использовать тот же браузер, который был открыт java (WebDriver driver = new InternetExplorerDriver();) и выполнить поиск текста "Сыр".

Вопрос в том, может ли объект класса WebDriver ("драйвер" в этом случае) использоваться в моей программе Perl, чтобы я мог использовать тот же браузер и выполнять различные операции пользовательского интерфейса на нем в Perl?

Теги:
selenium-webdriver

1 ответ

1

Я предполагаю, что если вы принесете переменную WebDriver за пределы метода googleTest() (сделав ее доступной для всех методов в классе), вы можете написать другие методы в TestSelenium которые ссылаются на тот же WebDriver который вы можете вызвать в perl.

Измените TestSelenium на что-то вроде этого:

public class TestSelenium {
    private WebDriver driver = new InternetExplorerDriver();

    public void googleTest() throws Exception {     
       driver.get("http://www.google.com/webhp?complete=1&hl=en");
    }

    public void searchForCheese() throws Exception {
       // Your actions here can still reference the driver
    }
}

И после того, как вы $test= TestSelenium->new;

Выполнение $test->googleTest; и $test->searchForCheese; должен теоретически ссылаться на один и тот же драйвер и, в свою очередь, на одно и то же окно браузера.

РЕДАКТИРОВАТЬ :

Если вы хотите передать объект driver обратно в perl, попробуйте что-то вроде этого.

Измените java-метод googleTest() чтобы вернуть драйвер после его выполнения (я буду использовать ваш оригинальный метод, но оба должны работать):

public WebDriver googleTest() throws Exception {     
   WebDriver driver = new InternetExplorerDriver();
   driver.get("http://www.google.com/webhp?complete=1&hl=en");
   return driver;
}

И тогда я думаю, что вы можете подключиться к дескриптору драйвера в perl через $mydriver= $test->goggleTest;

Я предполагаю, что вы сможете получить доступ к $mydriver WebDriver через $mydriver

  • 0
    Привет Ceiling Gecko, Спасибо, что заглянули в это. Java-объект («драйвер») откроет браузер и перейдет на страницу google.com, а затем можно будет использовать этот же объект («драйвер») в Perl, чтобы он мог выполнять дальнейшие операции с браузером, которые являются частью упомянутой функции searchForCheese () тобой. Другими словами, есть ли способ, с помощью которого дескриптор браузера может переключаться с Java на Perl?
  • 0
    @ user1474594 Отредактировано в некоторых дополнительных вещах, которые вы можете попробовать. Изменения в исходном googleTest() включают изменение типа возвращаемого значения с void на WebDriver и добавление строки в конце return driver; метода return driver; вернуть объект "водитель".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню