web-dev-qa-db-fra.com

Cochez la case en utilisant Selenium avec Python

Serait bien si quelqu'un sait comment cocher la case en utilisant Selenium avec Python.

from Selenium import webdriver
from Selenium.webdriver.common.keys import Keys

browser = webdriver.Firefox()
url = 'any url'
browser.get(url)

browser.find_element_by_id("15 Minute Stream Flow Data: USGS (FIFE)").click()

Je souhaite sélectionner la case à cocher correspondant à 15 minutes de flux de données: USGS (FIFE.

J'ai essayé en tant que id, name, link_text mais je n'ai pas pu détecter ce qui devait être utilisé?

23
2964502

Utilisez find_element_by_xpath avec l'expression xpath .//*[contains(text(), 'txt')] pour rechercher un élément contenant txt en tant que texte.

browser.find_element_by_xpath(
    ".//*[contains(text(), '15 Minute Stream Flow Data: USGS (FIFE)')]"
).click()

METTRE À JOUR

Certains contenus sont chargés après le chargement du document. J'ai modifié le code pour essayer 10 fois (1 dors entre les deux).

import time

from Selenium import webdriver
from Selenium.webdriver.common.keys import Keys
from Selenium.common.exceptions import NoSuchElementException

browser = webdriver.Firefox()
url = 'http://reverb.echo.nasa.gov/reverb/'
browser.get(url)

for i in range(10):
    try:
        browser.find_element_by_xpath(
            ".//*[contains(text(), '15 Minute Stream Flow Data: USGS (FIFE)')]"
        ).click()
        break
    except NoSuchElementException as e:
        print('retry in 1s.')
        time.sleep(1)
else:
    raise e
16
falsetru

La case à cocher HTML est:

<input id="C179003030-ORNL_DAAC-box" name="catalog_item_ids[]" type="checkbox" value="C179003030-ORNL_DAAC">

afin que vous puissiez utiliser

browser.find_element_by_id("C179003030-ORNL_DAAC-box").click()

Vous pouvez notamment rechercher les attributs des éléments en utilisant les outils de développement de Google Chrome:

Inspect element

7

Vous pouvez aussi essayer de cette façon:

browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']")

Si vous voulez savoir si c'est déjà vérifié ou pas:

browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']").get_attribute('checked')

cliquer:

browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']").click()
3
Carlo 1585

afin que vous puissiez essayer aussi:

browser = webdriver.Firefox()
url = 'http://reverb.echo.nasa.gov/reverb/'
browser.get(url) 
browser.find_element_by_name("catalog_item_ids[]").click()
0
user7365070