在Perl中使用java对象

在Perl中使用java对象,java,perl,selenium-webdriver,Java,Perl,Selenium Webdriver,情景: 有一个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程序使用Inl

情景:

有一个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 of 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();)并搜索文本“Cheese”


问题是,WebDriver类的对象(在本例中为“driver”)是否可以在我的Perl程序中进一步使用,以便我可以在Perl中使用相同的浏览器并对其执行不同的UI操作?

我假设如果将
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;
理论上应该引用相同的驱动程序,反过来又引用相同的浏览器窗口

编辑:

如果要将
驱动程序
对象传回perl,请尝试以下方法

更改
googleTest()
java方法,以在使用该方法后返回驱动程序(我将使用您原来的方法,但两者都可以使用):

然后我认为您可以通过
$mydriver=$test->goggleTest;


我假设您随后可以通过
$mydriver

Hi-Cellumic Gecko访问
WebDriver
钩子,感谢您查看此内容。java对象(“驱动程序”)将打开浏览器并进入google.com页面,然后可以访问同一对象(“驱动程序”)在perl中使用,以便它在浏览器上进一步执行操作,这些操作是您提到的函数searchForCheese()的一部分。换句话说,是否有任何方法可以使浏览器的句柄从java切换到perl?@user1474594编辑了一些您可以尝试的其他内容。对原始
googleTest()的更改
方法涉及将返回类型从
void
更改为
WebDriver
,并在方法
返回驱动程序的末尾添加一行;
以返回“driver”对象。
public WebDriver googleTest() throws Exception {     
   WebDriver driver = new InternetExplorerDriver();
   driver.get("http://www.google.com/webhp?complete=1&hl=en");
   return driver;
}