0

J'essaye d'employer le webdriver de sélénium pour cliquer sur un bouton dans une classe différente. La page Web est la suivante:comment appuyer sur le bouton avec le même ID mais dans la classe différente?

<div class="fade tab-pane" id="mm9-tab-content" role="tabpanel"> 
 
    <div class="button-submit"> 
 
    <button class="btn btn-primary btn-lg btn-block post" id="download" type="button">Download</button> 
 
    </div> 
 
</div> 
 

 
<div class="fade tab-pane" id="dm3-tab-content" role="tabpanel"> 
 
    <div class="button-submit"> 
 
    <button class="btn btn-primary btn-lg btn-block post" id="download" type="button">Download</button> 
 
    </div> 
 
</div>

les données sont dans 2 classes mm9-tab-content et dm3-tab-content. Je veux que le système clique sur le bouton de téléchargement dans le dm3-tab-content.

J'ai essayé d'utiliser

driver.find_element_by_xpath('xpath = (//*@id="download")[1]').click() 

pour obtenir la deuxième instance de download mais il ne semble pas fonctionner. Des idées?

+0

ID sont censés être unique. – Barmar

+0

try find_element_by_css ('# dm3-tab-content #download') – yong

Répondre

0

Votre XPath semble invalide. Essayez ci-dessous à la place

driver.find_element_by_xpath('(//*[@id="download"])[2]').click() 

Notez que, contrairement à l'indexation Python, dans les nœuds XPath commence à partir 1, de sorte que le deuxième élément doit avoir l'indice [2]

0

Si vous connaissez l'ordre dans lequel apparaissent les boutons et celui que vous voulez utiliser, vous pouvez trouver tous les éléments avec l'id = « télécharger », en utilisant find_elements_by_css_selector:

buttons = driver.find_elements_by_css_selector('#download') 

Ensuite, vous pouvez accéder à chaque bouton dans l'ordre.

0

cliquer sur le bouton sous mm9-tab-content utilisation de la classe

driver.find_element_by_css_selector('#mm9-tab-content #download').click() 

cliquer sur le bouton sous classe dm3-tab-content utilisation

driver.find_element_by_css_selector('#dm3-tab-content #download').click()