How can I select the checkbox using Selenium with Python?
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.
The checkbox HTML is:
<input id="C179003030-ORNL_DAAC-box" name="catalog_item_ids[]" type="checkbox" value="C179003030-ORNL_DAAC">
so you can use
browser.find_element_by_id("C179003030-ORNL_DAAC-box").click()
One way you can find elements' attributes is using the Google Chrome Developer Tools:
The best way to handle the element "Checkbox" if it has text is to use a JavaScript function to extract it from the webpage:
For example: //*[text()='text on element']
Here also you can use the same while extracting the checkbox and use the click() function to check it.
driver = webdriver.Chrome()
url = "URl of site"
driver.get(url)
checkbox = driver.find_element_by_xpath(//*[text()='text on element'])
checkbox.click()
To check whether an element got checked or not, you may use the get_attribute()
function.
For example: checkbox.get_attribute('checked')
You can try in this way as well:
browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']")
If you want know if it's already checked or not:
browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']").get_attribute('checked')
to click:
browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']").click()
Use find_element_by_xpath with the XPath expression .//*[contains(text(), 'txt')]
to find a element that contains txt
as text.
browser.find_element_by_xpath(
".//*[contains(text(), '15 Minute Stream Flow Data: USGS (FIFE)')]"
).click()
UPDATE
Some contents are loaded after document load. I modified the code to try 10 times (1 second sleep in between).
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 1 second')
time.sleep(1)
else:
raise e
This is the best approach to click by using Selenium Python:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
url = 'Any URL'
browser.get(url)
box = browser.find_element_by_xpath("paste the XPath expression here")
browser.execute_script("arguments[0].click();", box)
You can try this as well:
browser = webdriver.Firefox()
url = 'http://reverb.echo.nasa.gov/reverb/'
browser.get(url)
browser.find_element_by_name("catalog_item_ids[]").click()