I am having trouble clicking a span tag that is a button, but not using button html tag at all.
Most example i see are doing something like
the entire html of one logged in of the page where all the buttons are
http://codepad.org/b0mi7mYG
[anchor=to_attachment][/anchor]
Most example i see are doing something like
Quote:find_tag('tag_name').Click()but i keep getting errors such as
Error:Traceback (most recent call last):
File "test1.py", line 73, in <module>
clip_all_btns(browser)
File "test1.py", line 63, in clip_all_btns
element.Click()
AttributeError: 'WebElement' object has no attribute 'Click'
full code. Specifically from the function on line 51 clip_all_btns. In which it loops all the <span class add-text> code for each button#!/usr/bin/python3 env from selenium import webdriver import time import os def setup(): ''' setup webdriver and create browser ''' chromedriver = "/home/metulburr/chromedriver" os.environ["webdriver.chrome.driver"] = chromedriver browser = webdriver.Chrome(chromedriver) return browser def login(browser): ''' login to account ''' browser.get("https://dg.coupons.com/signin/") time.sleep(1) username = browser.find_element_by_id("email") password = browser.find_element_by_id("password") username.send_keys("MY_EMAIL") password.send_keys("MY_PASS") login_attempt = browser.find_element_by_xpath("//*[@type='submit']") login_attempt.submit() def get_btns(browser): ''' return a list of buttons from span tag class name to add coupon ''' return browser.find_elements_by_class_name('add-text') def make_all_btns_visable(browser): ''' show all buttons by scrolling down ''' count = 0 for _ in range(100): browser.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(1) #browser.FindElement(By.XPath("//div[@class='pod ci-grid recommended desktop ']//div[@class='media']//div[@class='media-body']//div[@class='badge']//span[@class='add-text']")).Click() clip_btns = get_btns(browser) print('Scrolling {} buttons into view'.format(len(clip_btns))) if count >= len(clip_btns): break else: count = len(clip_btns) def clip_all_btns(browser): ''' clip all coupons by clicking all add-text span tag ''' clip_btns = get_btns(browser) for btn in clip_btns: element = browser.find_element_by_tag_name("span") print(element) print(element.text) element.Click() browser = setup() login(browser) time.sleep(3) browser.get('https://dg.coupons.com/coupons/') time.sleep(3) make_all_btns_visable(browser) clip_all_btns(browser) with open('output.txt','w') as f: f.write(browser.page_source) #print(browser.page_source)where each button section consists of:
<div class="pod ci-grid recommended desktop " data-agent="desktop" data-code="X508365" data-omscid="19635134" data-podid="05b5dd4b-c143-4ec3-8031-4e79ebeecb98" data-source=""> <div class="pod-icon Dollar General "> </div> <div class="hover"> <div class="sprite-pod circle"> <p class="click-text"> Add to card </p> <p class="click-text-sec"> </p> </div> </div> <div class="media"> <div class="media-object pull-left"> <img alt="" src="//cdn.cpnscdn.com/static.coupons.com/ext/bussys/cpa/pod/89/247/389247_9c7d2c59-368a-4203-92cd-0c99622a439e.gif"/> <div class="show-detail"> Show Details <span class="caret"> </span> </div> </div> <div class="media-body"> <p class="pod_summary"> <span class="eboxtop-img"> </span> Save $5.00 </p> <p class="pod_brand"> Dollar General </p> <p class="pod_description"> when you make a purchase of $30 or more (pre-tax) at a Dollar General Location 12/3/16 </p> <p aria-label="expiration on 12/03/16" class="pod_expiry"> Exp: 12/03/16 </p> <div class="badge"> <span aria-label="activated coupon" class="activate-text"> ✓ </span> <span aria-label="click to add coupon" class="add-text"> <span> Add </span> + </span> </div> </div> </div> <div class="sprite-pod clipped-container"> <div class="clipped-view"> <span class="box clip-box clip-action"> <i> ✓ </i> Added </span> <span class="box info pull-right"> <i> ⇱ </i> Info </span> </div> </div> <div class="detail" style="display:none"> <div> <strong class="sub"> Details: </strong> $30 or more (pretax) calculated after all other Dollar general discounts. Limit one per customer. We reserve the right to limit use to normal retail purchases. No cash value. Coupon excludes: gift cards, phone cards, prepaid financial cards, prepaid wireless handsets, Rug Doctor rentals, propane, e-cigarettes, tobacco and alcoholic beverages. </div> </div> </div>each button itself is:
<span aria-label="click to add coupon" class="add-text"> <span> Add </span> + </span>I tried clicking both span tags but getting the same result.
the entire html of one logged in of the page where all the buttons are
http://codepad.org/b0mi7mYG
[anchor=to_attachment][/anchor]
Recommended Tutorials: