我正在尝试遵循Selenium Webdrive教程
http://www.toolsqa.com/selenium-webdriver/headless-browser-testing-selenium- webdriver/
有一个简单的测试,这里是步骤:
开启网页http://google.com
获取页面标题。
搜索“ Selenium”
再次检查页面标题。
从类代码示例开始,这是我的代码
package headlessBrowser; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.htmlunit.HtmlUnitDriver; public class TestOne { public static void main(String[] args) { // Declaring and initialising the HtmlUnitWebDriver HtmlUnitDriver unitDriver = new HtmlUnitDriver(); // open google.com webpage unitDriver.get("http://google.com"); System.out.println("Title of the page is -> " + unitDriver.getTitle()); // find the search edit box on the google page WebElement searchBox = unitDriver.findElement(By.name("q")); // type in Selenium searchBox.sendKeys("Selenium"); // find the search button WebElement button = unitDriver.findElement(By.name("gbqfba")); // Click the button button.click(); System.out.println("Title of the page is -> " + unitDriver.getTitle()); } }
尝试执行它,我遇到以下错误
Title of the page is -> Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element with name: q
没有打印页面名称:????? 似乎在页面中找不到“ q”元素。????
我检查了Firebug,似乎代码中存在“ q”元素(在下面的代码片段中查找name =“ q” …)
<input spellcheck="false" dir="ltr" style="border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%; background: transparent url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D") repeat scroll 0% 0%; position: absolute; z-index: 6; left: 0px; outline: medium none;" aria-autocomplete="both" role="combobox" aria-haspopup="false" class="gsfi" id="lst-ib" maxlength="2048" name="q" autocomplete="off" title="Cerca" value="" aria-label="Cerca" type="text">
我在Windows 7上使用Eclipse Luna
有什么建议?先感谢您 …
切萨雷
我已经解决了....我在组织中的代理后面,所以我必须设置代理。
我发现了这一点:HtmlUnitDriver似乎没有正在加载page。
寻找FunThomas424242评论,并观看此链接https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/htmlunit/HtmlUnitDriver.html
因此,正确的代码如下:
package headlessBrowser; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.htmlunit.HtmlUnitDriver; public class TestOne { public static void main(String[] args) { // Declaring and initialising the HtmlUnitWebDriver HtmlUnitDriver unitDriver = new HtmlUnitDriver(); // Necessary set Proxy if you're behind it !!!! unitDriver.setProxy("proxy.YOUR-ORGANIZATION.COM", XXXX); // open google.com webpage unitDriver.get("http://www.google.com"); System.out.println("Title of the page is -> " + unitDriver.getTitle()); // find the search edit box on the google page WebElement searchBox = unitDriver.findElement(By.name("q")); // type in Selenium searchBox.sendKeys("Selenium"); // find the search button WebElement button = unitDriver.findElement(By.name("btnG")); // Click the button button.click(); System.out.println("Title of the page is -> " + unitDriver.getTitle()); } }
“核心”行如下
// Necessary set Proxy if you're behind it !!!! unitDriver.setProxy("proxy.YOUR-ORGANIZATION.COM", XXXX);
您必须在其中更新代理配置的位置。