masterchief01
masterchief01

Reputation: 43

How do i click on the link while using selenium python

I'm new to python and selenium. This is an HTML snippet of the page im trying to scrape a page this I want to scrape on the basis of data-attr1 given in the html snippet. Please share some code to find this link and click on it.

<a class="js-track-click challenge-list-item" data-analytics="ChallengeListChallengeName" data-js-track="Challenge-Title" data-attr1="grading" data-attr3="code" data-attr4="true" data-attr5="true" data-attr7="10" data-attr-10="0.9" data-attr11="false" href="/challenges/grading"><div class="single-item challenges-list-view-v2 first-challenge cursor"><div id="contest-challenges-problem" class="individual-challenge-card-v2 content--list-v2 track_content"><div class="content--list_body"><header class="content--list_header-v2"><div class="challenge-name-details "><div class="pull-left inline-block"><h4 class="challengecard-title">Grading Students<div class="card-details pmT"><span class="difficulty easy detail-item">Easy</span><span class="max-score detail-item">Max Score: 10</span><span class="success-ratio detail-item">Success Rate: 96.59%</span></div></h4></div></div><span class="bookmark-cta"><button class="ui-btn ui-btn-normal ui-btn-plain star-button" tabindex="0" aria-label="Add bookmark"><div class="ui-content align-icon-right"><span class="ui-text"><i class="js-bookmark star-icon ui-icon-star"></i></span></div></button></span><div class="cta-container"><div class="ctas"><div class="challenge-submit-btn"><button class="ui-btn ui-btn-normal primary-cta ui-btn-line-primary" tabindex="0"><div class="ui-content align-icon-right has-icon"><span class="ui-text">Solved</span><i class="ui-icon-check-circle ui-btn-icon"></i></div></button></div></div></div></header></div></div><div class="__react_component_tooltip place-top type-dark " data-id="tooltip"></div></div></a>

Upvotes: 1

Views: 530

Answers (4)

sdasara
sdasara

Reputation: 107

Use double-click with Actionchains because click might not work in Python.

eg.

from selenium.webdriver import ActionChains
# Get the element however you want
element = driver.find_element_by_xpath("//a[@data-attr1='grading']")
ActionChains(driver).double_click(settings_icon).perform()

Upvotes: 0

Tek Nath
Tek Nath

Reputation: 1779

Since there is no name id or class available directly you can use xpath. The element that you are looking for is in div with class challenges-list and you want to click on first link inside it. You can use this xpath

//a[@data-attr1='grading']

And for clicking you can do

driver.find_element_by_xpath("//a[@data-attr1='grading']").click()

Upvotes: 0

Jortega
Jortega

Reputation: 3790

If the page is not loading as fast as expected you can try:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[@data-attr1='grading']"))).click()

Upvotes: 1

Sameer Arora
Sameer Arora

Reputation: 4507

You can click on the element using the xpath:

element = driver.find_element_by_xpath("//a[@data-attr1='grading']")
element.click();

Upvotes: 0

Related Questions