我试图从网站上废弃一些东西(例子facebook(不使用图形api只是为了学习),所以我成功登录并登陆首页,我想废弃一些数据,但问题是当我降落时在首页上,然后Facebook显示一个图层和一个框,其中显示"打开通知",现在没有点击" Not Now"或"打开"之间的任何按钮;我无法对分裂做任何事情,当我试图点击分裂时,我没有做任何事情,因为这些按钮的链接是"#"
当鼠标悬停在按钮页脚上时显示:
和inspect元素显示了这个:
我尝试过使用其他帐户,但在登录后首先显示此图层:
现在我有问题如何通过splinter或selenium点击这两种类型的按钮:
第一种按钮,显示"#"如href
第二个铬显示为块,允许的东西
我的代码是:
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("example@gmail.com")
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()
出于测试目的,您可以尝试"查看更多按钮"在Facebook的趋势部分,这也显示"#"如何点击?
答案 0 :(得分:0)
不要让我发表评论,因为我没有足够的代表......但你是否尝试按类选择元素然后对其执行.click()?这可能是诀窍,因为href是“#”可能意味着按钮有另一个目的。
答案 1 :(得分:0)
我已经解决了我的问题,因为那个链接是“#”所以如果我通过css或其他方法点击它只是重新加载页面,并且每次重新加载后该图层会一次又一次出现,但我尝试了一些不同的解决方案,我点击javascript:
首先,我尝试在chrome中找到通过js控制台点击的正确元素:
document.getElementsByClassName('layerCancel _4jy0 _4jy3 _517h _51sy _42ft')[0].click();
这在js控制台中工作得很好所以现在我使用了splinter方法"browser.execute_script()"
并将该脚本作为参数传递给此方法。
browser.execute_script("document.getElementsByClassName('layerCancel _4jy0 _4jy3 _517h _51sy _42ft')[0].click()")
它现在正如我想的那样完美。但我仍然没有找到一种方法如何点击浏览器推送通知'允许',“阻止”等
谢谢:)