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

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

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

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

問題描述

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

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

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

  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`
  }

如何正確調(diào)用位于WebTest類中的navigateToUrl

推薦答案

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

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

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

更新

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

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

需要

webTest.navigateToUrl(url, webDriverClass);

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

如果從步驟定義內(nèi)部調(diào)用該方法,則甚至不需要使用@ValueSource。您只需要一個數(shù)據(jù)表,并以這種方式直接從步驟定義傳遞參數(shù):

@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);

}

您的測試步驟應(yīng)該如下所示:

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

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

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

分享到:
標簽:Java Web 擴展 方法 調(diào)用 驅(qū)動程序
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

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

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定