C# 何时何地使用按类的FindElement方法
我对Selenium体系结构有基本的了解,其中搜索上下文是由Web驱动程序接口实现的主接口,Web驱动程序接口由各种浏览器驱动程序类扩展。通常,我们在selenium项目中遵循POM,并通过它们的by类定义每个对象-C# 何时何地使用按类的FindElement方法,c#,selenium,webdriver,C#,Selenium,Webdriver,我对Selenium体系结构有基本的了解,其中搜索上下文是由Web驱动程序接口实现的主接口,Web驱动程序接口由各种浏览器驱动程序类扩展。通常,我们在selenium项目中遵循POM,并通过它们的by类定义每个对象- By addButton=By.Id("asdf"); 但我意识到我们甚至可以- addButton.FindElement(By.XPath("ABC"). 但这不会返回类似于driver.FindElement(addButton) 何时使用上述语句?下面使用的是Java
By addButton=By.Id("asdf");
但我意识到我们甚至可以-
addButton.FindElement(By.XPath("ABC").
但这不会返回类似于driver.FindElement(addButton)
何时使用上述语句?下面使用的是Java绑定中的术语,但C#绑定也是如此:
弗斯特
@spcial是对的,Selenium中没有定义“By.findElement(By)”。然而,有一个“By.findElement(SearchContext)”定义,我将在下面解释:
SearchContext vs.By
在Selenium中,有一个名为a的接口,然后是类
SearchContext
可以是WebElement
或WebDriver
现在有两个选项可以查找元素(使用伪代码):
1) SearchContext.findElement(By…)
或
2) By.findElement(SearchContext…)
两者都做同样的事情
假设您有一个驱动程序和By变量,如下所示:
WebDriver driver = new FirefoxDriver();
By addButtonLocator = By.id("asdf");
1) "take the driver and search for an element using this By-statement"
现在,您可以通过两种方式找到您的元素:
1) driver.findElement(addButtonLocator)代码>
或
2) addButtonLocator.findElement(驱动程序)代码>
又来了!两者的作用相同,这只是“阅读”这些表达的另一种方式,如下所示:
WebDriver driver = new FirefoxDriver();
By addButtonLocator = By.id("asdf");
1) "take the driver and search for an element using this By-statement"
或
如前所述,如果使用已识别的元素,则可以使用更小的作用域来代替驱动程序。是否确定addButton.FindElement(By.XPath(“ABC”)
是有效的表达式?我使用的是Java,而不是C#,Java不接受这个表达式,因为By.xpath(“…”
是一个By.class,但是这个语句需要一个SearchContext
(例如chromedriver),据我所知,这就是我们在Java中使用它的方式-driver.findElement(addButton)
。当我们试图在关键字驱动的框架中编写泛型函数时,通常使用它。