我尽可能地密切关注Selenium的“Getting Started Guide”,但是当我尝试运行时,我在控制台中收到很多警告和错误
码。
我还从here导入了selenium-java-2.48.2中的所有罐子。
非常感谢任何愿意透视这个并试着帮助我的人!
这是我的课程,我从指南中复制并粘贴。
Example.java
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class Example {
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.google.com");
// 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.getTitle());
driver.quit();
}
}
GoogleSuggest.java
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class GoogleSuggest {
public static void main(String[] args) throws Exception {
// The Firefox driver supports javascript
WebDriver driver = new FirefoxDriver();
// Go to the Google Suggest home page
driver.get("http://www.google.com/webhp?complete=1&hl=en");
// Enter the query string "Cheese"
WebElement query = driver.findElement(By.name("q"));
query.sendKeys("Cheese");
// Sleep until the div we want is visible or 5 seconds is over
long end = System.currentTimeMillis() + 5000;
while (System.currentTimeMillis() < end) {
WebElement resultsDiv = driver.findElement(By.className("gssb_e"));
// If results have been returned, the results are displayed in a drop down.
if (resultsDiv.isDisplayed()) {
break;
}
}
// And now list the suggestions
List<WebElement> allSuggestions = driver.findElements(By.xpath("//td[@class='gssb_a gbqfsf']"));
for (WebElement suggestion : allSuggestions) {
System.out.println(suggestion.getText());
}
driver.quit();
}
}
运行'Example.java'时控制台中出现的内容
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.javascript.host.html.HTMLElement addBehavior
WARNING: Unimplemented behavior: #default#userdata
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1419] Error in expression; ':' found after identifier "progid".
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1467] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1478] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1488] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1499] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1510] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1601] Error in expression. (Invalid token ";". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, "-", <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <URI>, <FUNCTION>.)
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1613] Error in expression. (Invalid token ";". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, "-", <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <URI>, <FUNCTION>.)
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1626] Error in expression. (Invalid token ";". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, "-", <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <URI>, <FUNCTION>.)
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1639] Error in expression. (Invalid token ";". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, "-", <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <URI>, <FUNCTION>.)
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1653] Error in expression. (Invalid token "}". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, "-", <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <URI>, <FUNCTION>.)
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:2203] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:2543] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:2616] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:3194] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:3701] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:3761] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:4196] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:4960] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:6103] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:6338] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:6781] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:6938] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:7010] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:7352] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [2:199] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [2:1691] Error in expression; ':' found after identifier "progid".
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [2:2949] Error in expression; ':' found after identifier "progid".
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [2:3481] Error in expression; ':' found after identifier "progid".
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [2:3969] Error in expression; ':' found after identifier "progid".
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [2:4480] Error in expression; ':' found after identifier "progid".
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [3:117] Error in declaration. '*' is not allowed as first char of a property.
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:685] Error in expression; ':' found after identifier "progid".
Jan 07, 2016 6:15:36 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://www.google.com/' [1:1235] Error in expression; ':' found after identifier "progid".
Page title is: Cheese! - Google Search
这个类做了它应该做的事情,即使它显示了一堆警告......
当我运行GoogleSuggest.java时控制台中出现的内容
Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"class name","selector":"gssb_e"}
Command duration or timeout: 9 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.48.0', revision: 'b7b081a', time: '2015-10-07 15:45:39'
System info: host: 'Zeus', ip: '192.168.7.103', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_20'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=40.0.3, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: f90cec4e-f47c-4306-9491-3248e836dd7c
*** Element info: {Using=class name, value=gssb_e}
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)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:647)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:353)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByClassName(RemoteWebDriver.java:467)
at org.openqa.selenium.By$ByClassName.findElement(By.java:391)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:345)
at GoogleSuggest.main(GoogleSuggest.java:23)
Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"class name","selector":"gssb_e"}
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.48.0', revision: 'b7b081a', time: '2015-10-07 15:45:39'
System info: host: 'Zeus', ip: '192.168.7.103', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_20'
Driver info: driver.version: unknown
at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///C:/Users/Bill/AppData/Local/Temp/anonymous6644175254170304178webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10659)
at <anonymous class>.FirefoxDriver.prototype.findElement(file:///C:/Users/Bill/AppData/Local/Temp/anonymous6644175254170304178webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10668)
at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/Bill/AppData/Local/Temp/anonymous6644175254170304178webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12534)
at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/Users/Bill/AppData/Local/Temp/anonymous6644175254170304178webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12539)
at <anonymous class>.DelayedCommand.prototype.execute/<(file:///C:/Users/Bill/AppData/Local/Temp/anonymous6644175254170304178webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12481)
除了控制台中的所有功能外,该类还会打开FireFox,等待Google加载,键入奶酪,搜索,然后停止并显示所有错误。
答案 0 :(得分:2)
运行Example.java
时观察到的警告可以忽略,代码工作正常。如果您希望删除警告,可以添加以下代码行。
public class Example {
static Logger log = Logger.getLogger("com.gargoylesoftware");
public static void main(String[] args) {
log.setLevel(Level.OFF)
// 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();
...................................
...................................
...................................
}
}
我在GoogleSuggest.java
中发现了一些问题。
为Sleep until the div we want is visible or 5 seconds is over
编写的代码是错误的。根据您的代码,Selenium会查找元素,直到System.currentTimeMillis()
小于end
。但每次selenium寻找div时,会抛出一个异常,说找不到元素。这应该在try catch中处理。
在您的代码中使用类名resultsDiv
标识gssb_e
。当我检查时,我的班级名称为sbsb_a
。请检查一下。
list
是由代码中的xpath //td[@class='gssb_a gbqfsf']
获得的。当我检查时,没有td
标签是相关的。请尝试以下xpath //div[@class='sbqs_c']
。
所需的代码更改摘要:
while (System.currentTimeMillis() < end) {
try {
WebElement resultsDiv = driver.findElement(By.className("sbsb_a"));
// If results have been returned, the results are displayed in a
// drop down.
if (resultsDiv.isDisplayed()) {
break;
}
} catch (Exception e) {
// do nothing
}
}
// And now list the suggestions
List<WebElement> allSuggestions = driver.findElements(By.xpath("//div[@class='sbqs_c']"));
答案 1 :(得分:1)
只是警告,你可以忽略它们。
使用其他WEB驱动程序而不是默认驱动程序。例如,它可能是CHROME(您可以选择不同的浏览器,如CHROME,FIREFOX_31,FIREFOX_31,INTERNET_EXPLORER_8,INTERNET_EXPLORER_11)。
HtmlUnitDriver unitDriver = new HtmlUnitDriver(BrowserVersion.CHROME); 我想它应该解决你的问题。