我试图在" 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)
答案 0 :(得分:1)
您尝试使用的下拉元素位于iFrames下。请切换到它,然后继续进行选择。
driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[height='520']")));
new Select(driver.findElement(By.xpath(".//*[@id='ddlJobs']"))).selectByVisibleText("QA Engineer");
希望这能解决。