在Perl中使用java对象
情景: 有一个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
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;
}