Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用@FindBy和By的区别;这个错误的原因是什么?_Java_Selenium_Findby - Fatal编程技术网

Java 使用@FindBy和By的区别;这个错误的原因是什么?

Java 使用@FindBy和By的区别;这个错误的原因是什么?,java,selenium,findby,Java,Selenium,Findby,我在自动化。此页面在框架内具有登录部分。当我切换到不同的框架并搜索我的电子邮件/电话字段(登录部分)时,我可以找到它,然后使用工作块(如下),但不能使用类似的代码(也如下)。两个块之间的唯一区别是我如何识别我的userNameInputBox元素 //这是有效的 List<WebElement> iframeElements = driver.findElements(By.tagName("iframe")); int nFrame

我在自动化。此页面在框架内具有登录部分。当我切换到不同的框架并搜索我的电子邮件/电话字段(登录部分)时,我可以找到它,然后使用工作块(如下),但不能使用类似的代码(也如下)。两个块之间的唯一区别是我如何识别我的userNameInputBox元素

//这是有效的

       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
}}