有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java Selenium自定义方法,以获取webelement的名称作为参数

在我的项目中使用Java Selenium和Page对象,希望创建一个自定义方法,该方法将获取两个字符串作为参数,组合它们并调用right webelement来执行一些操作

下面是我的页面对象的示例

public class Test extends Base {

public Test() {
    PageFactory.initElements(driver, this);
}


@FindBy(xpath = "//div[@id='question1No']")
WebElement question1Yes;

@FindBy(xpath = "//div[@id='question1No']")
WebElement question1No;


public Object GetField(String answer, String question) {
    Field field = null;
    try {
        field = Test.class.getField((question+answer).replace("\"", ""));
        return field.get(this);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

public void answerQuestion(String answer, String question) {    
    WebElement element = (WebElement)GetField(answer,question);
    element.click();

}

例如,调用该方法:

answerQuestion("Yes", "question1")

调用此方法应执行click on question1Yes元素


共 (1) 个答案

  1. # 1 楼答案

    你可以使用反射

    Field field = Test.class.getField("question1Yes");
    WebElement element = (WebElement) field.get(this);
    

    然后你可以用你的网页元素做任何你想做的事

    upd。 如果字段是私有的,则写入field.setAccessible(true);