簡體   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