Java 使用@FindBy和By的区别;这个错误的原因是什么?
我在自动化。此页面在框架内具有登录部分。当我切换到不同的框架并搜索我的电子邮件/电话字段(登录部分)时,我可以找到它,然后使用工作块(如下),但不能使用类似的代码(也如下)。两个块之间的唯一区别是我如何识别我的userNameInputBox元素 //这是有效的Java 使用@FindBy和By的区别;这个错误的原因是什么?,java,selenium,findby,Java,Selenium,Findby,我在自动化。此页面在框架内具有登录部分。当我切换到不同的框架并搜索我的电子邮件/电话字段(登录部分)时,我可以找到它,然后使用工作块(如下),但不能使用类似的代码(也如下)。两个块之间的唯一区别是我如何识别我的userNameInputBox元素 //这是有效的 List<WebElement> iframeElements = driver.findElements(By.tagName("iframe")); int nFrame
List<WebElement> iframeElements = driver.findElements(By.tagName("iframe"));
int nFrames = iframeElements.size();
//Switching frame to go to login frame
for (int i=0; i<=nFrames ; i++) {
System.out.println("nFrames: " +nFrames);
driver.switchTo().frame(i);
if (driver.findElement(By.name("lid")).isDisplayed()){
driver.findElement(By.name("lid")).sendKeys("myuserName1");
}}
List iframelements=driver.findElements(按.tagName(“iframe”));
int nFrames=iframelements.size();
//将框架切换到登录框架
对于(int i=0;i,@FindBy
标记设计用于页面对象模型。要使用它,必须使用PageFactory初始化页面对象,以便初始化字段,然后由webdriver“查找”
有关它的文档,请参阅
因此,在您尝试使用userNameInput
字段之前,您必须有一些类似
PageFactory.initElements(驱动程序,页面);
(其中,页面
var是一个使用@FindBy
注释的类。准确地说,遗漏了您指出的相同内容。工作顺利。谢谢。
//Elements
@FindBy(name="lid")
WebElement userNameInput;
//Switching frame to go to login frame
for (int i=0; i<=nFrames ; i++) {
System.out.println("nFrames: " +nFrames);
driver.switchTo().frame(i);
if (driver.findElement(By.name("lid")).isDisplayed()){
userNameInput.click(); //clicking the inputBox
userNameInput.sendKeys("myuserName"); //Sendingkeys into
}}