Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将元素名称传递给另一个类方法_Java_Selenium_Cucumber - Fatal编程技术网

Java 将元素名称传递给另一个类方法

Java 将元素名称传递给另一个类方法,java,selenium,cucumber,Java,Selenium,Cucumber,我有一个功能文件,在其中我将选项卡名称(如Actions、WorkOrder、notifications选项卡)传递给pageobjects类,其中定义了tab元素及其操作。 如果该选项卡名称不可见,我们必须单击箭头按钮并单击该项目。我将该项命名为tabNameItem。不清楚如何在此方法中添加选项卡项名称。下面的方法引发了一个错误“然后用户从选项卡上单击“accountWorkOrdersTab”#AccountsPageSteps。用户从选项卡上单击选项卡(WebElement) cucum

我有一个功能文件,在其中我将选项卡名称(如Actions、WorkOrder、notifications选项卡)传递给pageobjects类,其中定义了tab元素及其操作。 如果该选项卡名称不可见,我们必须单击箭头按钮并单击该项目。我将该项命名为tabNameItem。不清楚如何在此方法中添加选项卡项名称。下面的方法引发了一个错误“然后用户从选项卡上单击“accountWorkOrdersTab”#AccountsPageSteps。用户从选项卡上单击选项卡(WebElement) cucumber.runtime.CucumberException:不知道如何将“accountWorkOrdersTab”转换为org.openqa.selenium.WebElement。请尝试编写自己的转换器: 调用方法:

@Then("^from the tabs User clicks on \"([^\"]*)\"$")
public void from_the_tabs_User_clicks_on_tab(WebElement tabname) throws Throwable {
    serviceCloudAccountsPageObject.openAccountsTabs(tabname);
}
动作类:

@FindBy(xpath = "//a[@text()='Work Order')]")
public WebElement accountWorkOrdersTab;

@FindBy(xpath = "//span[contains(.,'Work Order')]")
public WebElement accountWorkOrdersTabItem;
public void openAccountsTabs(WebElement tabName){


}

不要传递功能文件中的WebElement,只传递字符串即可。 从\u选项卡\u用户\u单击\u选项卡上的\u(字符串选项卡名称)

基于这个字符串值,您可以使用case语句并返回webElement

public WebElement returnElement(String tabname) {
    WebElement returnElement = null;


    switch (elementName) {
    case "tabname1":
        returnElement = driver.findElement(By.xpath("//a[@text()='Work Order')]"));
        break;
    case "tabname2":
        returnElement = driver.findElement(By.xpath("//span[contains(.,'Wor Order')]"));;
        break;
default:
        break;
    }

    return returnElement;
}
使用上述代码,您应该获得所需的web元素,并且可以对return元素执行操作

希望你有这个想法

public WebElement returnElement(String tabname) {
    WebElement returnElement = null;


    switch (elementName) {
    case "tabname1":
        returnElement = driver.findElement(By.xpath("//a[@text()='Work Order')]"));
        break;
    case "tabname2":
        returnElement = driver.findElement(By.xpath("//span[contains(.,'Wor Order')]"));;
        break;
default:
        break;
    }

    return returnElement;
}