日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了有沒有一種方法可以調用擴展Web驅動程序類的Java方法?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在使用WebDriverManager Java庫。它提供了一個通用管理器,可以被參數化為特定的管理器(對于Chrome、Firefox等)。我將它與Selify WebDriver和JUnit5的@PARAMETIZED和@ValueSource注釋一起使用,這樣我就可以在多個瀏覽器上運行我的測試。
我按照WebDriverManager文檔創建了一個實現:

 public class WebTest {

 WebDriver driver = null;


 @ParameterizedTest
 @ValueSource(classes = { ChromeDriver.class, FirefoxDriver.class })
 public void navigateToUrl(String url, Class<? extends WebDriver> webDriverClass) { //WebDriver class gets extended
 driver = WebDriverManager.getInstance(webDriverClass).create();
 driver.manage().window().maximize();
 driver.get(url);

在包含黃瓜步驟定義的類中,我嘗試調用navigateToUrl方法,但出現如下編譯錯誤:

  public class WebAppStepDefinitions {
  private final WebTest webTest = new WebTest();


  @Given("^I have navigated to the web url "([^"]*)"$")
  public void navigateToUrl(String url) {
  webTest.navigateToUrl(url, Class<? extends WebDriver > webDriverClass); //error on this line: `Cannot resolve symbol webDriverClass`
  }

如何正確調用位于WebTest類中的navigateToUrl

推薦答案

根據@ValueSource documentation,您不能使用此注釋來傳遞某些類的實例。該批注只能用于傳遞原始值、字符串和(不能傳遞對象)。您可以使用這些類來測試某個方法或某個對象是否為參數類的實例。不能使用它將實例傳遞給方法。

而不是,您可以做的是使用@MethodSource API傳遞方法的名稱,該方法可以為您提供(返回)那些實例(查找談論多個參數的段落)。例如,我認為您可以這樣做:

@ParameterizedTest
@MethodSource("getWebDrivers")
public void navigateToUrl(String url, List<WebDriver> drivers) {
 driver = WebDriverManager.getInstance(webDriverClass).create();
 driver.manage().window().maximize();
 driver.get(url);
}


public Stream<Arguments> getWebDriversAndUrl() {
    List<WebDrivers> drivers = new ArrayList<>();
    ... // Here you need to instantiate your drivers (skip if you have them already instantiated and set as global variables.
    drivers.add(chromeDriver);
    drivers.add(firefoxDriver);
    return return Stream.of(
        arguments("url1", drivers),
        arguments("url2", drivers);
}

更新

您的實現有一個編譯錯誤,因為您未能在步驟定義中聲明Web驅動程序類的參數。步驟定義只有一個參數。此行

webTest.navigateToUrl(String url, Class<? extends WebDriver > webDriverClass);

需要

webTest.navigateToUrl(url, webDriverClass);

問題是您在步驟定義中有一個作為參數傳遞的URL,而不是Class對象。

如果從步驟定義內部調用該方法,則甚至不需要使用@ValueSource。您只需要一個數據表,并以這種方式直接從步驟定義傳遞參數:

@Given("^I have navigated to the web url$")
public void navigateToUrl(DataTable table) {
    List<list> data = table.raw();
    // iterate thru list and call driver.get(url);

}

您的測試步驟應該如下所示:

Given I have navigated to the web url
| url | chrome |
| url | firefox |

由于您不能直接傳遞Class實例,因為它不是Cucumber支持的數據類型,因此創建自定義類型比使用此用例更麻煩。您將使用WebDriverManagergetIntance(),并使用瀏覽器名稱而不是驅動程序類。

這篇關于有沒有一種方法可以調用擴展Web驅動程序類的Java方法?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:Java Web 擴展 方法 調用 驅動程序
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定