2017-10-03 9 views
1

J'ai essayé cela pendant un certain temps et j'ai cherché sur différents forums mais je n'ai trouvé aucun extrait pour le faire.Sélection d'une valeur à partir de la liste déroulante avec l'ID span dans Selenium PYTHON

J'ai un rapport dans lequel les options doivent être sélectionnées via une liste déroulante utilisant Selenium en python. Voici la structure HTML

<div align="center"> Select Fruit</div> 
 
<p align="center"><br> 
 
\t <span id="0e6b87875e914a5f8d72bbee6844bea3" style="color: black; font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; width: 113px; display: inline-block;" class="sf-element sf-element-control sfc-property sfc-dropdown"> 
 
\t \t <div class="sf-element sf-element-dropdown" title="" style="position: relative; width: 100px;"> 
 
\t \t <div class="sf-element sf-element-icon" style="position: absolute; top: 1px; left: 91px; height: 17px; width: 17px;"> 
 
\t \t \t <svg width="17px" height="17px"><path d="M4,6 l7,0 l-3.5,3.5 z" fill="currentColor" stroke-width="1" transform="scale(1.1333333333333333,1.1333333333333333)" class="Down"></path></svg> 
 
\t \t </div> 
 
\t \t <div class="sf-element sf-element-text-box" style="display: inline-block; word-wrap: break-word; width: 83px;">(None)</div> 
 
\t \t \t <select class="sf-dropdown-select" style="color: rgb(0, 0, 0); font-family: Arial; background-color: rgb(248, 248, 248);"> 
 
\t \t \t \t <option value="0" selected="selected">(None)</option> 
 
\t \t \t \t <option value="1">Apple</option> 
 
\t \t \t \t <option value="2">Mango</option> 
 
\t \t \t \t <option value="3">Grapes</option> 
 
\t \t \t </select> 
 
\t \t </div> 
 
\t </span><br></p>

J'ai essayé différentes façons en utilisant le sélecteur CSS et XPath, mais rien ne semble fonctionner. Voici le code que j'ai essayé

driver.find_element_by_xpath('//*[@id="0e6b87875e914a5f8d72bbee6844bea3"]/div/select/option[@value = "Mango"]') 

aussi des variantes différentes comme les options [2] et l'aide du sélecteur de css, mais il donne toujours NoSuchElementException.

Quelqu'un peut-il partager quelques idées à ce sujet?

Merci

Répondre

0

Le dropdown est clairement dans balise <Select>. Par conséquent, il serait convinient d'utiliser le Select classe comme suit:

//import 
from selenium.webdriver.support.ui import Select 
//code block 
selectOption = Select(driver.find_element_by_class_name("sf-dropdown-select")) 
selectOption.select_by_visible_text("Mango") 
1

Ajouter texte() = "Mongo" au lieu de @ value = "Mongo"

driver.find_element_by_xpath('//[@id="0e6b87875e914a5f8d72bbee6844bea3"]/div/select/option[text() = "Mango"]').click() 
+0

Son me donner une nouvelle erreur: InvalidSelectorException: sélecteur invalide: impossible de localiser un élément avec l'expression XPath // [@ id = » 0e6b87875e914a5f8d72bbee6844bea3 "]/div/select/option [text =" 257 "] à cause de l'erreur suivante: SyntaxError: Impossible d'exécuter 'evaluate' sur 'Document': La chaîne '// [@ id =" 0e6b87875e914a5f8d72bbee6844bea3 "]/div/select/option [text = "257"] 'n'est pas une expression XPath valide. (Information sur la session: chrome = 43.0.2357.81) (Information sur le pilote: chromedriver = 2.20.353145 (343b531d31eeb933ec778dbcf7081628a1396067), plateforme = Windows NT 6.1 SP1 x86_64) – xx123

+0

pourriez-vous s'il vous plaît vérifier le xpath de l'élément? est-ce la même chose? – Reza

0

Lorsque vous traitez avec des éléments SELECT, il y a une classe d'aide, Select, qui en fait un beaucoup plus facile.

select = Select(driver.find_element_by_css_selector("#0e6b87875e914a5f8d72bbee6844bea3 select")) 
select.select_by_visible_text("Mango")