何时何地使用By类的FindElement方法



我对Selenium架构有基本的了解,其中Search Context是由Web Driver接口实现的主接口,由各种浏览器驱动类扩展。通常,我们对selenium项目遵循POM,并通过by类定义每个对象-

By addButton=By.Id("asdf");

但刚刚意识到我们甚至可以做-

addButton.FindElement(By.XPath("ABC"). 

但是这不会返回像driver.FindElement(addButton)

这样的元素

什么时候使用上面的语句?

下面使用的术语来自java绑定,但它也适用于c#绑定:

<标题>第一h1> special是对的,Selenium中没有定义"By. findelement (By)"。尽管如此,还是定义了"By.findElement(SearchContext)",我将在下面解释:

SearchContext与By

在Selenium中,您有一个称为SearchContext的接口,然后您有By类。

SearchContext可以是WebElementWebDriver

现在您有两个选项来查找元素(使用伪代码):

1) SearchContext.findElement(By...)

2) By.findElement(SearchContext...)

都做同样的事情!

假设您有一个驱动程序和By变量,如下所示:

WebDriver driver = new FirefoxDriver();
By addButtonLocator = By.id("asdf");

现在你可以通过两种方式找到你的元素:

1) driver.findElement(addButtonLocator);

2) addButtonLocator.findElement(driver);

!它们都做同样的事情,只是"读取"这些表达式的另一种方式,像这样:

1) "take the driver and search for an element using this By-statement"

2) "take the By-statement and search for an element that fits this statement within driver"


如前所述,如果您使用已经标识的元素,则可以使用较小的作用域,而不是驱动程序。

最新更新