ne semble pas sembler sélectionner un élément de liste html: p> p>
code>, à l'aide de webdiver. Un délai d'attente est reçu lors de la localisation.
IList <IWebElement> dropDownMenues = driver.FindElements(By.ClassName("dropdown-menu")); //Populates all drop down menues
IList<IWebElement> selectedGender = dropDownMenues[1].FindElements(By.TagName("li")); //Populate drop down items
//dropDownMenues[1].Click(); - This code doens't expand the drop down menu
driver.FindElement(By.XPath("/html/body/div[3]/div/div[6]/div/div/div/div[2]/div/div/form/div/div/div[2]/div/div[1]/button")).Click(); //This code opens the drop down
selectedGender[1].Click(); //Here's where I get the timeout
3 Réponses :
Pour cliquer sur l'un des éléments
code> car les éléments sont angular éléments que vous devez induire webDriverwait em> pour que l'élément souhaité soit cliquable em> et pour cliquer sur l'option avec du texte comme
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//button[@class='btn btn-lg form-control ng-pristine ng-valid ng-binding ng-isolate-scope ng-touched' and @name='genderButton']"))).Click();
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//button[@class='btn btn-lg form-control ng-pristine ng-valid ng-binding ng-isolate-scope ng-touched' and @name='genderButton']/ul//li[contains(@data-ng-click, 'gender') and text()='Male']"))).Click();
Merci Debanjanb, mais je reçois toujours un délai d'attente lorsque vous essayez de cliquer sur l'élément
En outre, c'est une application de page unique angularjs. Les éléments de boîte de déroulement sont cachés jusqu'à ce que vous cliquiez sur ... la page n'est pas rafraîchie bien sûr.
@Eyal Checkout ma réponse mise à jour et laissez-moi savoir le statut.
Merci @Debanjanb, mais je reçois toujours un délai d'attente. - Le 1er clic - je devais changer le XPath vers la boîte XPath de Tejas Jagtap sur Tejas Jagtap, est élargi. - Le 2e clic obtient toujours un délai d'attente ... avec votre XPath fourni, ou Tejas Jagtap's One. Ce délai d'attente est un délai d'attente de 60 secondes - ce qui signifie que la recherche n'a pas conduit correctement ...?
@Eyal en fait, il y a un problème avec le HTML que vous avez fourni. La balise
@ Debanjanb - Vous avez très raison! J'ai manqué de l'expansion (travailler avec Firebug). Mis à jour ci-dessus
Ceci pourrait également être fait en utilisant deux clics.
Faire 1er cliquez sur xpath: puis cliquez sur xpath: p> PS: utilisez le webDriver Attendez-vous de manière à donner du temps pour l'élément à charger. p> p>
Merci Tejas, mais tandis que le 1er clic fonctionne tout à bien (étend la sélection) - je reçois un délai d'attente d'essayer de cliquer sur LI [2] ... c'est inaccessible pour une raison quelconque, je ne peux pas comprendre comment contourner
En outre, c'est une application de page unique angularjs. Les éléments de boîte de déroulement sont cachés jusqu'à ce que vous cliquiez sur ... la page n'est pas rafraîchie bien sûr.
J'espère que vous avez suffisamment utilisé d'attendre après avoir cliqué sur le 1st Dropdown Click.
En outre, une fois, essayez avec ce xPath pour le 2e clic: // li [contient (texte (), 'mâle')] code>
Comme il s'avère, la solution était très simple et non ce qui se distingue ...
Tout ce que je devais faire, c'est J'ai mis à jour certains forfaits de sélénium dans mon studio Visual Il n'y a pas si probablement de cette situation, mais n'a pas rappelé que le chromeur doit être mis à jour en conséquence. P>