Selenium webdriver Selenium:@FindBy注释和initElemets()方法
我对Selenium和StackOverflow是新手 如果有任何错误,我提前道歉 我的问题是:Selenium webdriver Selenium:@FindBy注释和initElemets()方法,selenium-webdriver,page-factory,Selenium Webdriver,Page Factory,我对Selenium和StackOverflow是新手 如果有任何错误,我提前道歉 我的问题是: @FindBy()。它基本上将默认的null值更改为使用Proxy的接口实现。它还提供了WebElement的延迟实例化,这意味着只有在需要的时候,当您调用对WebElement的操作时,才会找到(查找?) 更深入地说: initElements接受Object或Class作为参数,并从中创建对象。这样,PageFactory获取类中的所有字段,验证其中是否有属于WebElement或List类型的
@FindBy()。它基本上将默认的null
值更改为使用Proxy
的接口实现。它还提供了WebElement
的延迟实例化,这意味着只有在需要的时候,当您调用对WebElement的操作时,才会找到(查找?)
更深入地说:
initElements
接受Object
或Class
作为参数,并从中创建对象。这样,PageFactory
获取类中的所有字段,验证其中是否有属于WebElement
或List类型的字段,并对其进行初始化
如果未使用@FindBy
注释WebElement
,则PageFactory
尝试通过变量名创建选择器。像这样的WebElement用户名
可能在没有注释的情况下实际工作
如果用@FindBy
注释WebElement
,则创建By
对象并将其连接到WebElement
以供以后使用。这部分只是一个假设
然后,创建WebElement
的实例。因为它是一个接口,所以不能用反射API直接实例化。代理用于处理WebElement
的创建PageFactory
使用反射,使用新创建的WebElements实例初始化所提供页面对象中的元素
WebDriver
和WebElement
都实现了界面SearchContext
,它还告诉WebDriver
如何查找元素。它是在整个页面的源代码还是范围被缩减到特定的WebElement
。这就是为什么我们可以通过像这样的其他元素来搜索元素:element.findElement(By.id(“用户名”))
希望我能解释一下