Performance Selenium-声明IWebElement变量与从驱动程序调用函数

Performance Selenium-声明IWebElement变量与从驱动程序调用函数,performance,selenium,testing,automation,automated-tests,Performance,Selenium,Testing,Automation,Automated Tests,我一直在使用Selenium为我的环境编写一些自动化测试。目前,我正在声明通过XPath引用web元素的IWebElement变量。仅仅从WebDriver调用click/clear/send键函数是否更有效、更好 当前方法: firefox = new FirefoxDriver(); IWebElement elem = firefox.FindElement(By.Xpath("//input[@type='text'])); elem.sendKeys("Hello StackOverf

我一直在使用Selenium为我的环境编写一些自动化测试。目前,我正在声明通过XPath引用web元素的IWebElement变量。仅仅从WebDriver调用click/clear/send键函数是否更有效、更好

当前方法:

firefox = new FirefoxDriver();
IWebElement elem = firefox.FindElement(By.Xpath("//input[@type='text']));
elem.sendKeys("Hello StackOverflow!");
firefox = new firefoxDriver();
firefox.FindElement(By.Xpath("//input[@type='text'])).sendKeys("Hello Stackoverflow!");
备选方案:

firefox = new FirefoxDriver();
IWebElement elem = firefox.FindElement(By.Xpath("//input[@type='text']));
elem.sendKeys("Hello StackOverflow!");
firefox = new firefoxDriver();
firefox.FindElement(By.Xpath("//input[@type='text'])).sendKeys("Hello Stackoverflow!");
如果您有任何建议和意见,我将不胜感激。

“仅从WebDriver调用click/clear/send键功能是否会更有效、更好?”

您不是从WebDriver调用它。在两个示例中都使用
RemoteWebElement:IWebElement

所以完全一样。不同之处在于可读性。

完全相同……可读性良好,无论您是否想要/需要一个存储元素的变量。如果要再次使用它,则应将其存储在变量中以供以后使用。如果您不需要再次使用它,那么将它存储在变量中是没有意义的。它毫无意义。超出范围后,如果需要,此方法GC将选择此对象(实际上只有2个引用字段的小包装器)。问题在于这两种说法的不同。我并不是不同意你的回答,我只是添加了一条评论,说明我如何决定何时创建变量,而不是仅仅使用一行程序。