Selenium Web Driver: findElement(By.name ..... 和无头浏览器
Selenium Web Driver: findElement(By.name ..... and headless browser
我正在尝试遵循 Selenium Webdrive 教程
http://www.toolsqa.com/selenium-webdriver/headless-browser-testing-selenium-webdriver/
有一个简单的测试,这里是步骤:
获取页面标题。
搜索“硒”
再次检查页面标题。
从class代码示例开始,这是我的代码
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
有什么建议吗?提前谢谢你...
切萨雷
您可以尝试将 xpath 与 //*[@id='sb_ifc0']
一起使用
使用 xpath 代替名称。
尝试使用此代码:
WebElement searchBox = unitDriver.findElement(By.xpath("//input[@name='q']"));
点击搜索按钮:
// find the search button
WebElement button = unitDriver.findElement(By.xpath("//input[@value='Google Search']"));
// Click the button
button.click();
它在我这边运行良好,并将页面标题打印为 'Google'。虽然它在 'find the search button' 代码处给了我错误。
Unable to locate element with name: gbqfba
错误似乎出在您的 URL 上,因为我猜是 driver 没有将 URL 带入地址栏,因此没有导航到www.google.com 网页。这就是 driver 无法打印页面标题和找到名称为 'q' 的搜索编辑框的原因。
这通常是由于与浏览器和 selenium jar 文件相关的兼容性问题而发生的。更新 jar 文件或降级浏览器可能会解决此问题。
我已经解决了....我在我的组织中使用代理,所以我必须设置代理。
我找到了这个:HtmlUnitDriver does not appear to be loading page。
寻找 FunThomas424242 评论并观看此 link 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());
}
}
"core" 行如下
// Necessary set Proxy if you're behind it !!!!
unitDriver.setProxy("proxy.YOUR-ORGANIZATION.COM", XXXX);
您必须在何处更新您的代理配置。
我正在尝试遵循 Selenium Webdrive 教程
http://www.toolsqa.com/selenium-webdriver/headless-browser-testing-selenium-webdriver/
有一个简单的测试,这里是步骤:
获取页面标题。
搜索“硒”
再次检查页面标题。
从class代码示例开始,这是我的代码
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有什么建议吗?提前谢谢你...
切萨雷
您可以尝试将 xpath 与 //*[@id='sb_ifc0']
使用 xpath 代替名称。
尝试使用此代码:
WebElement searchBox = unitDriver.findElement(By.xpath("//input[@name='q']"));
点击搜索按钮:
// find the search button
WebElement button = unitDriver.findElement(By.xpath("//input[@value='Google Search']"));
// Click the button
button.click();
它在我这边运行良好,并将页面标题打印为 'Google'。虽然它在 'find the search button' 代码处给了我错误。
Unable to locate element with name: gbqfba
错误似乎出在您的 URL 上,因为我猜是 driver 没有将 URL 带入地址栏,因此没有导航到www.google.com 网页。这就是 driver 无法打印页面标题和找到名称为 'q' 的搜索编辑框的原因。
这通常是由于与浏览器和 selenium jar 文件相关的兼容性问题而发生的。更新 jar 文件或降级浏览器可能会解决此问题。
我已经解决了....我在我的组织中使用代理,所以我必须设置代理。
我找到了这个:HtmlUnitDriver does not appear to be loading page。
寻找 FunThomas424242 评论并观看此 link 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());
}
}
"core" 行如下
// Necessary set Proxy if you're behind it !!!!
unitDriver.setProxy("proxy.YOUR-ORGANIZATION.COM", XXXX);
您必须在何处更新您的代理配置。