【问题标题】:Python + Selenium -- unable to click button (onClick=openWIndow)Python + Selenium -- 无法点击按钮 (onClick=openWINdow)
【发布时间】:2017-12-10 09:57:42
【问题描述】:

我正在尝试使用 Python Selenium WebDriver (Chrome) 单击按钮。 按钮的 HTML:

<button type="button" class="button blue" onclick="openWIndow(LINK_HERE, 'idpage6')">Like</button>

(我不得不删除“LINK_HERE”,因为 StackOverflow 不允许 Google 网址缩短器) 现在,我不是菜鸟,我知道您如何单击按钮。问题是,当我.click() 时,按钮没有响应。 onClick 字段似乎是这个问题的根源。

我尝试了很多不同的解决方案,这里有两个:

css_selector = 'div.container > div > button'
# Attempt 1
browser.find_element_by_css_selector(css_selector )
# Attempt 2
js_script = ''.join(["var elem = document.querySelector('",
                     css_selector,
                     "');",
                     "if( document.createEvent) {",
                     "var evObj = document.createEvent('MouseEvents');",
                     "evObj.initEvent( 'mouseover', true, false );",
                     "elem.dispatchEvent(evObj);",
                     "} else if( document.createEventObject ) {",
                     "elem.fireEvent('onmouseover');",
                     "}"])

browser.execute_script(js_script)

请注意按钮没有响应,任何尝试都没有引发错误。

这是一张图片来说明我想要完成的事情:

你自己试试吧,你可以登录我的账户,我已经在脚本里写好了用户名和密码。你必须改变WebDriver的路径。 代码 --> https://pastebin.com/fkYZxywf

【问题讨论】:

    标签: javascript python python-3.x selenium webdriver


    【解决方案1】:

    您应该为您的案例使用元素列表,并通过列表中的索引获取特定元素。

    list_of_like_buttons = ui.WebDriverWait(browser, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,".button.blue")))
    
    # Click on the second "Like"-button.
    list_of_like_buttons[1].click()
    

    希望对你有帮助!

    【讨论】:

    • 我无语了。我尝试了很多不同的方法,以两种方法^^为例。为什么他们不工作,但你的工作?他们成功地找到了完全相同的元素?
    • @Bjango,如果我的回答有帮助,请在我的回答附近打勾。
    • @Bjango,在点击“喜欢”按钮之前应该等待。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2021-07-10
    • 1970-01-01
    • 2014-02-16
    • 2016-05-08
    相关资源
    最近更新 更多