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

问题描述 投票:0回答:4

我有一个java中由maven驱动的Robot-framework项目,它使用selenium 3.4.0依赖项、robotframework 3.0.2依赖项、markusbernhardt的selenium2library版本1.4.0.8和robotframework-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,而是获取当前正在运行的 WebDriver(Robot 自动实例化)。我怎样才能做到这一点?

到目前为止,我已经创建了一个

Selenium2Library
对象,并使用
Selenium2Library.getLibraryInstance();
返回的值设置它,但这并没有让我访问 selenium 的方法(例如: getCurrentUrl() 未列出)。

java selenium robotframework
4个回答
5
投票

在Python中可以使用以下代码完成

from robot.libraries.BuiltIn import BuiltIn


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

0
投票

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

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();
    }
}

现在可以从驱动程序对象中使用 selenium 方法。但是,可能有更好的方法来做到这一点,因为

javax.script.ScriptException
异常中有这样的消息:“访问限制:类型'ScriptException'不是API(对所需库'C:\ Program Files \ Java \的限制” jdk1.8.0_131\jre\lib t.jar')"


0
投票

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

class SelCustomLib():

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

0
投票

${element} = 获取 WebElement ${captcha_image} def get_captcha_text(self,element): 以 open('logo.jpg', 'wb') 作为文件: 文件.write(element.screenshot_as_png)

© www.soinside.com 2019 - 2024. All rights reserved.