我试图运行此程序:如何解决org.openqa.selenium.NoSuchElementException
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class HtmlDriver {
public static void main(String[] args) {
// Create a new instance of the html unit driver
// Notice that the remainder of the code relies on the interface,
// not the implementation.
WebDriver driver = new HtmlUnitDriver();
// And now use this to visit Google
driver.get("http://www.stumbleupon.com/home/");
// Find the text input element by its name
WebElement element = driver.findElement(By.name("q"));
// Enter something to search for
element.sendKeys("Cheese!");
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
// Check the title of the page
System.out.println("Page title is: " + driver.getPageSource());
}
}
而且我得到以下异常:
异常线程“main”组织.openqa.selenium.NoSuchElementException:无法找到具有名称的元素:q 系统信息:os.name:'Linux',os.arch:'i386',os.version:'2.6.27-7-generic',java .version:'1.6.0_12' 驱动程序信息:driver.version:HtmlDriver at org.openqa.selenium.htmlunit.HtmlUn itDriver.findElementByName(HtmlUnitDriver.java:651) at org.openqa.selenium.By $ 4.findElement(By.java:148) at org.openqa.selenium.htmlunit.HtmlUnitDriver $ 4.call(HtmlUnitDriver.java:1133) 在org.openqa.selenium.htmlunit.HtmlUnitDriver $ 4.call(HtmlUnitDriver.java:1) 在org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:869) 在org.openqa.selenium.htmlunit .HtmlUnitDriver.findElement(HtmlUnitDriver.java:1130) 在org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:330) 在com.webdrivertest.HtmlDriver.main(HtmlDriver.java:20)
请他让我解决它。
我建议使用Selenium IDE。这样,您可以通过所需页面“驱动”,然后将代码格式化为所需的语言。 – bakoyaro 2011-01-05 06:16:59
找不到这个问题的答案吗?我从昨天开始搜索,但没有人为此提供解决方案。我想知道有没有解决这个问题的解决方案? – vkrams 2012-06-17 10:28:29
HtmlUnitDriver是在执行JS坏。如果目标网页使用了大量的OS JS甚至AJAX HtmlUnitDriver它是没有选择。关于硒卷筒纸驱动器的最大好处是,你可以运行与真正的浏览器相同的代码,在其他的答案中提到... – alfonx 2013-08-17 22:23:22