2016-07-15 9 views
0

Ich kann kein Element in Selen finden, das ich htmlUnitDriver verwendet habe. gut Treiber funktioniert gut, aber ich bin nicht in der Lage, google Suche Textfeld Element zu finden.Es ist nicht möglich, ein Element in Selen (htmlUnitDriver) zu finden

Hier ist der Code:

import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.htmlunit.HtmlUnitDriver; 

public class SampleUnitDriver 
{ 
    public static void main(String[] args) throws Exception 
    { 

      HtmlUnitDriver unitDriver = new HtmlUnitDriver(); 
      unitDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
      unitDriver.get("http://google.com"); 
      System.out.println("Title of the page is -> " + unitDriver.getTitle()); 

      WebElement searchBox = unitDriver.findElement(By.xpath(".//*[@id='gs_htif0']")); 
      searchBox.sendKeys("Selenium"); 
      WebElement button = unitDriver.findElement(By.name("gbqfba")); 
      button.click(); 
      System.out.println("Title of the page is -> " + unitDriver.getTitle()); 


    } 
} 

Hier ist ein Fehler:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate a node using .//*[@id='gs_htif0'] For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46' System info: host: 'user-PC', ip: '192.168.1.52', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_51' Driver info: driver.version: SampleUnitDriver at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByXPath(HtmlUnitDriver.java:1165) at org.openqa.selenium.By$ByXPath.findElement(By.java:361) at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1725) at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1721) at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:1367) at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1721) at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:606) at com.digitalmqc.automation.action.SampleUnitDriver.main(SampleUnitDriver.java:19)

Jede mögliche Hilfe geschätzt werden kann.

Antwort

1

Sie sind falsch Element lokalisieren, sollten Sie wie unten versuchen: -

HtmlUnitDriver unitDriver = new HtmlUnitDriver(); 

unitDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
unitDriver.get("http://google.com"); 
System.out.println("Title of the page is -> " + unitDriver.getTitle()); 

WebElement searchBox = unitDriver.findElement(By.name("q")) 
searchBox.sendKeys("Selenium"); 
WebElement button = unitDriver.findElement(By.name("btnG")); 
button.click(); 
System.out.println("Title of the page is -> " + unitDriver.getTitle()); 

Hoffe, es hilft .. :)

+0

ja seine Arbeit @Saurabh :) –

0

einige explizite Warteliste vor Element zu finden:

WebDriverWait wait = new WebDriverWait(driver, 10); 
WebElement searchBox = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@id='gs_htif0']")))); 
searchBox.sendKeys("Selenium"); 
+0

Sry buddy Ich erhalte diesen Fehler: ** Ausnahme im Thread "main" org.openqa.selenium.TimeoutException: Zeitüberschreitung nach 10 Sekunden, bis auf Element geklickt werden konnte: By.xpath: .//*[@id='gs_htif0 ' ] ** –

+0

Versuchen Sie Timeout auf 20 Sekunden zu ändern und stellen Sie sicher, dass xpath korrekt ist, wenn Sie nicht versuchen, cssSelector zu verwenden: 'input [type = 'search']' –

+0

Ohh Mann keine Verwendung mit CSS-Selektor und ich habe 20 Sekunden noch keine gegeben use :( –