2017-04-17 6 views
0
package ant; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.interactions.Actions; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.testng.annotations.Test; 
import org.testng.annotations.BeforeMethod; 


public class NewTestNG { 
public WebDriver driver; 

@BeforeMethod 
public void LAunchbrowser() { 
    driver = new FirefoxDriver(); 
    driver.get("https://www.google.co.in/"); 
    //driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

} 
    @Test 
    public void main() { 
    Actions action = new Actions(driver); 
    WebDriverWait wait = new WebDriverWait (driver, 20); 
    WebElement w= 
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//* 
    [@id='gs_htif0']"))); 
    WebElement a= driver.findElement(By.xpath(".//*[@id='gs_htif0']"));  
    action.moveToElement(a).click().sendKeys("Shirt").build().perform(); 
    driver.findElement(By.xpath("//div[@value='Search']")).click(); 


}} 

unter Störung zu erhalten:Timeout-Fehler in TestNG

FAILED: main org.openqa.selenium.TimeoutException: Timed out after 20 seconds waiting for element to be clickable: By.xpath: .//*[@id='gs_htif0'] Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:09' Driver info: org.openqa.selenium.firefox.FirefoxDriver Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=46.0, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}] Session ID: 93e46eb2-2ba1-479b-9bfd-c56178d7eb7c at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:80) at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:261) at ant.NewTestNG.main(NewTestNG.java:28)

+0

Können Sie einige kleine Änderungen vornehmen und den Status wie folgt aktualisieren: 1. Entfernen Sie die TestNG-Umgebungseinstellungen und versuchen Sie die Ausführung als reines Java-Programm? 2. Während der Ausführung als TestNG-Test/Suite mit Test-Annotation dürfen Sie den Methodennamen nicht als "main" verwenden, sondern zu etwas anderem ändern und den Status aktualisieren. – DebanjanB

Antwort

0

Ersetzen Sie Ihren @Test-Methodencode durch den unten genannten Code.

WebDriverWait wait = new WebDriverWait (driver, 20); 
    WebElement w= 
      wait.until(ExpectedConditions.elementToBeClickable(By.id("lst-ib"))); 
    w.sendKeys("Shirt"); 
    driver.findElement(By.id("_fZl")).click(); 

Lassen Sie mich wissen, ob es für Sie funktioniert.

+0

Es hat funktioniert. Dank Akarsh.Ich denke, xpatg war nicht korrekt. Aber ich hatte direkt von Firebug abgeholt. – Tester

+0

Xpath, den Sie geschrieben haben, ist in Ordnung, aber ID, die Sie verwenden, haben ein Attribut aria-hidden = "true", könnte sein, dass ID versteckt ist. Da bin ich mir nicht sicher. – Akarsh

0

denke ich, das Element nicht in Ihrer HTML-Seite nicht gefunden werden, vielleicht Ihre XPath ist falsch. Sie könnten versuchen, es mit Chrome-Entwickler-Tools> Konsole Registerkarte zu überprüfen, geben Sie dann $ x (". // [@ id = 'gs_htif0']") und sehen, ob es nichts zurückgibt. Vielleicht sollte Ihr xpath "// [@ id = 'gs_htif0']" sein.