1

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>
1

4 Answers 4

1

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()
Sign up to request clarification or add additional context in comments.

Comments

0

You can click on the element using the xpath:

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

Comments

0

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()

1 Comment

the following xpath does not seem to work, i always get the message(x_path not found)
0

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()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.