如何点击动态按钮链接"#"从硒和裂片?

时间:2017-09-27 21:24:32

标签: python selenium automation beautifulsoup splinter

我试图从网站上废弃一些东西(例子facebook(不使用图形api只是为了学习),所以我成功登录并登陆首页,我想废弃一些数据,但问题是当我降落时在首页上,然后Facebook显示一个图层和一个框,其中显示"打开通知",现在没有点击" Not Now"或"打开"之间的任何按钮;我无法对分裂做任何事情,当我试图点击分裂时,我没有做任何事情,因为这些按钮的链接是"#"

enter image description here

当鼠标悬停在按钮页脚上时显示:

enter image description here

和inspect元素显示了这个:

enter image description here

我尝试过使用其他帐户,但在登录后首先显示此图层:

enter image description here

现在我有问题如何通过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的趋势部分,这也显示"#"如何点击?

enter image description here

2 个答案:

答案 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()")

它现在正如我想的那样完美。但我仍然没有找到一种方法如何点击浏览器推送通知'允许',“阻止”等

谢谢:)