繁体   English   中英

机器人框架:如何获取 selenium webdriver 的当前实例来编写自己的关键字?

[英]Robot framework: how can I get current instance of selenium webdriver to write my own keywords?

我在 java 中有一个 maven 驱动的 Robot-framework 项目,它使用 selenium 3.4.0 依赖项、robotframework 3.0.2 依赖项、markusbernhardt 的 selenium2library 版本 1.4.0.8 和 robotsframework-maven-plugin 版本 1.4.7。

我的机器人测试位于src/main/test/robotframework/acceptance文件夹中,而在src/main/java/mypackage 中,我创建了一个 Customized.java 文件来为浏览器驱动程序路径设置系统属性(然后我在我的测试:

*** Settings ***
Library             Selenium2Library
Library             mypackage.Customized

这完美地工作。 但现在我想实现我自己的关键字来扩展 Selenium2Library。 但我不确定如何获取当前正在运行的 WebDriver 实例。

我的意思是,如果我不使用 Robot 而只使用普通的 Selenium,我会做这样的事情:

WebDriver driver=new ChromeDriver();
driver.doSomething();

但是,在这种情况下,我不想实例化一个新的 WebDriver,而是获取当前正在运行的(Robot 自动实例化的)。 我怎样才能做到这一点?

到目前为止,我已经创建了一个Selenium2Library对象并使用Selenium2Library.getLibraryInstance();返回的值设置它Selenium2Library.getLibraryInstance(); 但这并没有让我访问 selenium 的方法(例如:getCurrentUrl() 未列出)。

在python中可以用以下代码完成

from robot.libraries.BuiltIn import BuiltIn


def _browser(self):
    return BuiltIn().get_library_instance('Selenium2Library')._current_browser()

实际上,我找到了一个解决方案,但是我不确定这是正确的方法:

public class Customized {

    private static Selenium2Library s;
    private BrowserManagement b;
    private WebDriver driver;

    public Customized() throws ScriptException {
        try {
            Customized.s = (Selenium2Library) Selenium2Library.getLibraryInstance();
        } catch (javax.script.ScriptException e) {
            e.printStackTrace();
        }
        b = s.getBrowserManagement();
        driver=b.getCurrentWebDriver();
    }
}

现在,可以从驱动程序对象中使用硒方法。 但是,可能有更好的方法,因为javax.script.ScriptException异常中显示以下消息:“ 访问限制:类型'ScriptException'不是API(对必需的库'C:\\ Program Files \\ Java \\ jdk1.8.0_131 \\ jre \\ lib \\ rt.jar')

对于较新的 Selenium 版本 (4.0),可以使用以下代码段:

class SelCustomLib():

def get_browser_driver(self):
    return BuiltIn().get_library_instance('SeleniumLibrary').driver

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM