2016-01-12 140 views
0

我想將我的硒測試從Firefox瀏覽器轉換爲HTMLUnit驅動程序。 但是,當我嘗試運行HTMLUnit測試時,它給了我XPATH的錯誤。 Firefox瀏覽器測試運行非常好。將Firefox驅動程序的Selenium測試移植到HTMLUnit驅動程序

我的應用程序測試套件廣泛使用XPATH。 因此,我故意嘗試XPATH。

我一直在使用

new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated 

已經嘗試過,但還是我得到了同樣的錯誤。

這是錯誤:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate a node using .//*[@id='tsf']/div[2]/div[3]/center/input[1] 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:55:52' 
System info: host: 'WL309476', ip: '10.83.16.25', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_66' 
Driver info: driver.version: HtmlUnitDriver 
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByXPath(HtmlUnitDriver.java:1161) 
    at org.openqa.selenium.By$ByXPath.findElement(By.java:361) 
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1715) 
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1) 
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:1363) 
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1711) 
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:606) 
    at seleniumtest.Test_Google.main(Test_Google.java:17) 

這是我的Firefox瀏覽器測試:

WebDriver driver = new FirefoxDriver(); 
driver.get("https://www.google.co.in/"); 
WebElement e =driver.findElement(By.xpath(".//*[@id='tsf']/div[2]/div[3]/center/input[1]")); 
System.out.println("The current element is " + e.getAttribute("value")); 

這是我測試的HtmlUnit:

WebDriver driver = new HtmlUnitDriver(true); 
driver.get("https://www.google.co.in/"); 
WebElement e =driver.findElement(By.xpath(".//*[@id='tsf']/div[2]/div[3]/center/input[1]")); 
System.out.println("The current element is " + e.getAttribute("value")); 

我不認爲這是一個重複的,因爲沒有JavaScript涉及我的情況。 我只想將Firefox驅動程序的簡單測試移植到HTMLUnit。

+0

[Selenium Form Submission]的可能重複(http://stackoverflow.com/questions/32724664/selenium-form-submission) – SiKing

+0

我不認爲它是重複的,因爲在我的情況下沒有JavaScript參與。 我只想將Firefox驅動程序的簡單測試移植到HTMLUnit。 –

回答

0

嘗試稍微等待頁面加載,然後嘗試並找到您的元素。這只是爲了確保你的代碼在頁面仍然被加載的時候沒有執行。

嘗試像下面,

WebDriver driver = new HtmlUnitDriver(true); 
driver.get("https://www.google.co.in/"); 
Thread.sleep(5000); 
WebElement e =driver.findElement(By.xpath(".//* [@id='tsf']/div[2]/div[3]/center/input[1]")); 
System.out.println("The current element is " + e.getAttribute("value")); 

Thread.sleep();將等待指定的時間執行下一行之前。

請檢查並查看是否找到您的元素。

AND

另請檢查您的網頁或元素是否依賴於JavaScript。 HTMLUnit驅動程序無法處理JavaScript並缺少普通瀏覽器具有的功能。

+0

HtmlUnit和'HtmlUnitDriver'有一個選項來啓用JavaScript處理(請參閱文檔)。但值得一試的是,請注意,它具有自己的JS引擎,並且與「真實」瀏覽器相比,結果很可能會有所不同。 – qqilihq

相關問題