我试图从网站上删除一些东西(例如facebook (不是为了学习而使用图形api ),所以我成功登录并登陆首页,在那里我想销毁一些数据,但问题是当我登陆首页时,facebook显示了一个图层和一个框,上面写着“打开通知”,现在没有点击"Not“或”打开“之间的任何按钮,我不能用碎片做任何事情,而当我试图点击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上的趋势部分,这也显示了"#“如何点击?

发布于 2017-09-28 07:55:24
我已经解决了我的问题,因为这个链接是"#“,所以如果我通过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()")就像我想要的那样。但我仍然没有找到一种方法,如何点击浏览器推送通知‘允许’,‘阻止’等。
谢谢:)
https://stackoverflow.com/questions/46457456
复制相似问题