在完美的HTML上,WebDriver在控件上给出了NoSuchElementException

时间:2014-04-28 06:56:08

标签: testing selenium functional-programming automation webdriver

我试图在" http://www.efrotech.com/careers"中自动执行重置功能。用于学习目的。当我得到控制定位器时,我发现它是完美的HTML,几乎所有的定位器;但是当我尝试运行脚本时,它无法识别控件并抛出痛苦的NoSuchElement异常。你能说出那可能出错的地方吗?

    package com;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class ScriptChecker {

    /**
     * @param args
     */

    public static WebDriver driver;
    public static String baseUrl;

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub

        driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.manage().window().maximize();
        baseUrl = "http://www.efrotech.com";


        driver.get(baseUrl +"/careers");


        new Select(driver.findElement(By.id("ddlJobs"))).selectByVisibleText("QA Engineer");
        driver.findElement(By.cssSelector("input#txtName")).sendKeys("Muzaffar");

        System.out.println("Done here");

    }

}

我已尝试过每个定位器,但无法操纵控件状态及其值。

Stacktrace紧随其后:

线程中的异常" main" org.openqa.selenium.NoSuchElementException:无法找到元素:{"方法":" id","选择器":" ddlJobs"} 命令持续时间或超时:10.07秒 有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html 构建信息:版本:' 2.41.0',修订版:' 3192d8a',时间:' 2014-03-27 17:17:32' 系统信息:主持人:' muzaffar',ip:' 192.168.0.161',os.name:' Windows 7',os.arch:' amd64',os.version:' 6.1',java.version:' 1.7.0_05' 会议ID:206431fe-6770-4cbc-a60e-71fe92739807 驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver 功能[{platform = XP,acceptSslCerts = true,javascriptEnabled = true,browserName = firefox,rotate = false,locationContextEnabled = true,version = 25.0.1,cssSelectorsEnabled = true,databaseEnabled = true,handlesAlerts = true,browserConnectionEnabled = true,nativeEvents = false,webStorageEnabled = true,applicationCacheEnabled = true,takesScreenshot = true}]     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)     at java.lang.reflect.Constructor.newInstance(Unknown Source)     在org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)     在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)     在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)     在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348)     在org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:389)     在org.openqa.selenium.By $ ById.findElement(By.java:214)     在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340)     在com.ScriptChecker.main(ScriptChecker.java:30) 引起:org.openqa.selenium.remote.ErrorHandler $ UnknownServerException:无法找到元素:{"方法":" id","选择器":&# 34; ddlJobs"} 构建信息:版本:' 2.41.0',修订版:' 3192d8a',时间:' 2014-03-27 17:17:32' 系统信息:主持人:' muzaffar',ip:' 192.168.0.161',os.name:' Windows 7',os.arch:' amd64',os.version:' 6.1',java.version:' 1.7.0_05' 驱动程序信息:driver.version:未知     at .FirefoxDriver.prototype.findElementInternal_(file:/// C:/Users/SMUZAF~1/AppData/Local/Temp/anonymous1906408348495286600webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:8905)     at .fxdriver.Timer.prototype.setTimeout /< .notify(file:/// C:/Users/SMUZAF~1/AppData/Local/Temp/anonymous1906408348495286600webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component的.js:396)

1 个答案:

答案 0 :(得分:1)

您尝试使用的下拉元素位于iFrames下。请切换到它,然后继续进行选择。

driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[height='520']")));
new Select(driver.findElement(By.xpath(".//*[@id='ddlJobs']"))).selectByVisibleText("QA Engineer");
希望这能解决。