2017-04-17 2 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(); 


}} 

obtenir ci-dessous erreur:erreur délai d'attente dans 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

Pouvez-vous apporter quelques petites modifications et mettre à jour le statut comme suit: 1. Supprimer les paramètres d'environnement TestNG et essayer d'exécuter en tant que programme Java pur? 2. Lors de l'exécution en tant que TestNG Test/Suite avec l'annotation Test, vous ne devez pas utiliser le nom de la méthode comme "principal", le changer en autre chose et mettre à jour le statut. – DebanjanB

Répondre

0

Remplacez votre code de méthode @Test par le code ci-dessous.

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(); 

Faites-moi savoir si cela fonctionne pour vous.

+0

Cela a fonctionné. Merci Akarsh.Je suppose que xpatg n'était pas correct.Mais j'avais ramassé directement à partir de firebug. – Tester

+0

Xpath que vous avez écrit est bien, mais l'identifiant que vous utilisez possède un attribut aria-hidden = "true", peut-être que cet identifiant est caché. Je ne suis pas sûr à ce sujet. – Akarsh

0

Je pense que l'élément n'a pas pu être trouvé dans votre page html, peut-être votre XPath est incorrect. vous pouvez essayer de le vérifier à l'aide des outils de développement chrome> onglet console, puis tapez $ x (". // [@ id = 'gs_htif0']") et voyez s'il retourne quelque chose. Peut-être que votre xpath devrait être "// [@ id = 'gs_htif0']"