Установите флажок, используя Selenium с Python

Было бы хорошо, если кто-то знает, как выбрать флажок, используя Selenium с 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()

Я хочу установить флажок, соответствующий 15-минутному потоку данных потока: USGS (FIFE.

Я пробовал как id, name, link_text, но не мог определить, что следует использовать?

Ответы

Ответ 1

Используйте find_element_by_xpath с помощью выражения xpath .//*[contains(text(), 'txt')], чтобы найти элемент, содержащий txt как текст.

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

UPDATE

Некоторое содержимое загружается после загрузки документа. Я модифицировал код, чтобы попробовать 10 раз (1 сон между ними). ​​

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

Ответ 2

Флажок HTML:

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

чтобы вы могли использовать

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

В качестве одного из атрибутов атрибутов элементов можно использовать инструменты разработчика Google Chrome:

Inspect element

Ответ 3

Вы также можете попробовать:

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

Если вы хотите знать, было ли это уже проверено или нет:

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

:

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

Ответ 4

чтобы вы могли попробовать это:

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