Java:调用名称存储在变量中的方法

标签 java selenium

我有这样的要求:

String command = "click";   // this can have value such as clear, getLocation, getSize, getTagName etc. 
WebDriver driver = new ChromeDriver(options); //creating a webdriver object
driver.findElement(By.id("id1")).click(); //Here I want "click" method should be called dynamically as per what I have stored in variable `command`.

那么,有没有可能像这样:

driver.findElement(By.id("id1")).<something to call click()>

我已经看过 Java 中的反射,但根据我的要求,这对我来说很复杂。任何指示都会有所帮助!

最佳答案

您的变量代表您想对网络元素执行的操作(在本例中,单击它)。

适合的类型不是 String .使用 Consumer<WebElement>相反(或者 driver.findElement() 返回的任何类型):

Consumer<WebElement> command = e -> e.click();

// ...

command.accept(driver.findElement(By.id("id1")));

这是类型安全的、高效的、可重构的,并且比反射灵活得多(因为您的消费者可以对元素做任何它想做的事情,不限于没有任何参数的单个方法调用。例如,输入一些文本在文本字段中)

关于Java:调用名称存储在变量中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45959319/

相关文章:

java - 我将如何以较小的、类似应用程序引擎查询规划器的方式打破这个索引?

java - 如何从保存 List<> 对象的文件中反序列化?

java - Hive 阶乘 UDF

java - 如何让 Activity 在暂停时对本地广播使用react?

java - 使用 selenium webdriver 定位由 javascript 创建的元素

javascript - 使用 Selenium、JavaScript 和 Node.js 检查元素是否存在

java - 如何在 Selenium 中测试动态生成的元素

java - Arraylist.remove(index) 方法的效率?

java - 为什么我改进的 Selenium IDE 脚本在 Selenium WebDriver 执行中表现不同?

python - 如何使 Selenium 脚本运行得更快?