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