I am trying to scrap something from website (example facebook(not using graph api just doing for learning), so I successfully login and land on front page, where I want to scrap some data, but the problem is when I land on front page, then facebook shows a layer and a box which says “turn on notification”, now without click on any button between “Not Now” or “turn on” I can’t do anything with splinter, and when I tried to click splinter doesn’t do anything because the link of those button are “#”
when hovering on button footer shows this :
and inspect element shows this :
I tried with other account but that shows this layer as first thing after login :
Now I have question how to click on these 2 types of button via splinter or selenium :
first type of button which shows “#” as href
second which chrome shows for block, allow things
My code is :
from selenium import webdriver
from splinter import Browser
web_driver=webdriver.Chrome('/Users/paul/Downloads/chromedriver/chromedriver')
url = "https://www.example.com"
browser = Browser("chrome")
visit_browser = browser.visit(url)
email_box = '//*[@id="email"]'
find_1 = browser.find_by_xpath(email_box)
find_1.fill("[email protected]")
password_box = '//*[@id="pass"]'
find_2 = browser.find_by_xpath(password_box)
find_2.fill("example12345")
button_sub = '//*[@id="u_0_5"]'
find_3 = browser.find_by_xpath(button_sub)
find_3.click()
for testing purpose you can try on “see more button” in trending section on facebook, that also shows “#” how to click that ?
2
Answers
I have solved my problem , since that link was "#" so if i was click via css or other method it was just reloading the page and that layer appear again and again after every reload , But i tried little different solution and i click it by javascript :
First i tried and find the right element for clicking via js console in chrome :
This is working perfect in js console so now i used splinter method
"browser.execute_script()"
and pass that script as argument to this method.And its working perfect now as i wanted. But still i have not found a way how to click on browser push notification 'Allow" , "Block" etc
Thanks :)
Not letting me comment because I don’t have enough rep … but have you tried to select the element by class and then performing .click() on it? That might do the trick as the href being “#” probably means the button has another purpose.