2017-09-09 5 views
0

élément n'est pas erreur visible même si mon XPath est uniqueélément n'est pas erreur visible même si mon XPath est unique

//System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe"); 

//WebDriver driver= new FirefoxDriver(); 
//WebDriver driver= new ChromeDriver(); 

driver.manage().window().maximize(); 
driver.get("https://www.goindigo.in/"); 

driver.findElement(By.linkText("One Way")).click(); 
driver.findElement(By.xpath("//button[@class='btn buttonGlbl btn-close button-trigger']")).click(); 
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 
driver.findElement(By.xpath("//div[@class='innertab-content one-way-tab-ctnt']//li[@class='city-dropdown destination-dropdown ps-destination-dropdown without_label']//div[@class='city-dropdown-list city-name-to']//ul//li[3]")).click(); 
} 
}// 
+0

Oui, vous pouvez obtenir l'erreur ElementNotVisible même si vous utilisez le sélecteur unique ... quelle est votre question? – Andersson

+0

Je ne parviens pas à sélectionner la ville dans la liste déroulante. Je ne sais pas comment procéder – Abhishek

Répondre

0
/System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe"); 

//WebDriver driver= new FirefoxDriver(); 
//WebDriver driver= new ChromeDriver(); 

driver.manage().window().maximize(); 
driver.get("https://www.goindigo.in/"); 

WebElement onewayLink=driver.findElement(By.linkText("One Way")); 
onewayLink.click(); 
WebElement btnElement=driver.findElement(By.xpath("//button[@class='btn buttonGlbl btn-close button-trigger']")); 

WebDriverWait wait= new WebDriverWait(driver,20); 
wait.until(ExpectedConditions.visibilityOf(btnElement)); 
btnElement.click(); 
driver.findElement(By.xpath("//div[@class='innertab-content one-way-tab-ctnt']//li[@class='city-dropdown destination-dropdown ps-destination-dropdown without_label']//div[@class='city-dropdown-list city-name-to']//ul//li[3]")).click(); 
} 
}// 
+0

J'ai essayé cela maintenant, mais la même erreur. Je suis capable de cliquer sur le bouton OK, mais après cela, je suis incapable de sélectionner la ville de la première liste déroulante. – Abhishek

+0

Ok laissez-moi essayer à nouveau – iamsankalp89

+0

si c'est goutte à goutte vous devez le sélectionner – iamsankalp89

0

réponse ci-dessus, personne ne frappe la cause, il n'a rien à voir avec le besoin d'attendre un élément. La cause première est que vous devez cliquer sur la zone de saisie de la ville de/à pour faire apparaître la liste des villes, puis cliquez sur la ville que vous vouliez.

Il s'agit d'un principe de conception au sélénium: un élément doit être visible, avant que le sélénium ne le clique. Le sélénium desinger espère pouvoir simuler des opérations du point de vue de l'utilisateur, car nous savons que l'utilisateur a besoin de voir la liste des villes avant de pouvoir en choisir une. Nous devons donc également faire en sorte que le sélénium «voit» la liste des villes au début.

Mais une exception, lorsque vous souhaitez sélectionner une option à partir d'un Select, vous pouvez directement cliquez sur l'option souhaitée, pas besoin de faire les options pop-up d'abord.

vous pouvez trouver une telle question du lien ci-dessous, et je donne la réponse détaillée pour cela.
Using firefox webdriver trying to load the option Name from dropdown but not working?

extrait de code pour résoudre votre problème:

driver.get("https://www.goindigo.in/"); 
// click 'One Way' tab 
driver.findElement(By.css(".one-way-tab")).click(); 
// Click 'OK' on Information pop-up 
driver.findElement(By.css(".buttonGlbl.btn-close")).click(); 

// Click 'From' city input box for 'One Way' 
driver.findElement(By.css("#oneWay .origins-value.city-name-value")).click(); 
// Choose city 'Delhi' 
driver.findElement(By.css("#oneWay .origin-city-name")) 
     .findElement(By.partialLinkText("Delhi")) 
     .click(); 

// Click 'To' city input box for 'One Way' 
driver.findElement(By.css("#oneWay .destinations-value.city-name-value")).click(); 
// Choose city 'Indore' 
driver.findElement(By.css("#oneWay .dest-city-name")) 
     .findElement(By.partialLinkText("Indore")) 
     .click(); 
+0

Hey, merci, je suis capable de le faire fonctionner avec votre code. Mais d'une manière ou d'une autre, lorsque les scripts s'exécutent automatiquement en sélectionnant Delhi dans la liste, il a échoué au départ, mais j'ai changé de ville et cela a fonctionné. Je vais voir pourquoi il sélectionne Delhi automatiquement. – Abhishek