我想在Anki的输入字段中填写文本。但是,ID为“f0”的输入字段从一开始就不存在。因此,我添加了这个
DesiredCapabilities caps = new DesiredCapabilities();
caps.setJavascriptEnabled(true);
caps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX,"Y");
System.setProperty("phantomjs.page.settings.userAgent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36");
WebDriver driver = new PhantomJSDriver(caps);
//...
driver.get("https://ankiuser.net/edit/");
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("f0")));
driver.findElement(By.id("f0")).sendKeys("text");
但是,我得到了执行
Exception in thread "main" org.openqa.selenium.WebDriverException: {"errorMessage":"undefined is not an object (evaluating 'b.value.length')"...
Command duration or timeout: 132 milliseconds
代码片段的最后一行。 (driver.find...
)
但为什么我会在132毫秒后获得超时? wait
对象应等待10秒,对吗?为什么这个find方法会抛出错误,但是wait.until
却没有?如果输入字段不存在,为什么我不从wait.until
获得例外?
谢谢!