2017-06-02 2 views
0

J'essaie d'utiliser Python Selenium pour entrer une valeur personnalisée dans une zone de saisie sur un site Web.Comment sélectionner un élément dans une table à l'aide de Python Selenium?

Le code html montre que cet élément est stocké dans une table. Le code HTML et mon code sont indiqués ci-dessous. J'ai essayé d'envoyer des clés sur l'élément avec la classe 'filterLink' et la classe 'value'. Est-il possible d'envoyer des clés sur un élément de données de table? Ou devrais-je chercher ailleurs dans le code HTML pour envoyer des clés dans ce champ?

L'erreur que je reçois est « Message: erreur inconnue: ne peut pas se concentrer élément »

Merci beaucoup !!

<div class="ContentSourceTypeData show" group="Provider Type"> 
    <ul> 
     <li> 
     <table class="listItem"> 
      <tbody> 
      <tr> 
       <td class="label"> 
        <a class="filterLink" href="javascript:void(0);" value="bank" name="Banks" address="true"> 
         <span class="value">Banks</span>&nbsp;(1831) 
        </a> 
       </td> 
       </tr> 
      ..... 

My code... 

index_details_elem = browser.find_element_by_class_name('ContentSourceTypeData') 

nameTable = index_details_elem.find_elements_by_class_name("listItem")[0] # 
Select first listItem as element 
nameDataElem = nameTable.find_element_by_class_name("label") 

#nameInputElem = nameDataElem.find_elements_by_class_name("value") #used the above line instead of this one as the 'span' element seemed to be causing an issue 
#print nameElem.location() 
#nameDataElem.click() # removed as I can't click in a table 

nameDataElem.send_keys("lookup value") 
+0

Il n'y a pas de balise "input" dans le DOM .. Comment envoyer des sendkeys? –

+0

Pouvez-vous fournir plus d'informations comme le site Web que vous essayez d'automatiser? Parce que je ne peux pas voir une balise d'entrée dans le code HTML –

+0

Désolé, je n'ai pas ajouté le site Web. C'est juste un qui nécessite une licence pour les données et un nom d'utilisateur/mot de passe payé, donc je ne peux pas partager cela. Qu'est-ce que le 'DOM'? Je n'ai pas vu de drapeau d'entrée sur d'autres webelements que j'ai pu utiliser sendkeys sur –

Répondre

0

Je m'attendrais à ce que vous puissiez send_keys à n'importe quel élément Web de sélénium. J'utiliserais probablement un sélecteur css (Peut-être qu'il y a un autre élément sur la page avec un nom de "label"). Essayez de faire:

webelement = "a[class=\"filterLink\"]" 
webelement.send_keys("lookup value") 

qui sélectionnera tous les éléments « a », avec une valeur de classe « Filterlink », puis envoyer les clés « valeur de recherche » à elle.

+0

Merci, j'ai vérifié cela. Toutes les classes 'filterlink' ont la même structure, et aucune n'a de section d'entrée. Peut-être que c'est parce qu'il s'agit d'une liste déroulante sur le site plutôt que d'une boîte de type gratuit –

+0

Cela pourrait être. La liste déroulante s'affiche-t-elle lorsque vous faites send_keys? – Brydenr