Python 3 + Selenium: 点击元素但无反应

3

我点击了元素,没有出现任何错误,但是弹出窗口(Facebook中的“添加特色照片”弹出窗口)仍然存在。它没有关闭。

这是html代码:

<div class="_5lnf uiOverlayFooter _5a8u">
   <table class="uiGrid _51mz uiOverlayFooterGrid" cellspacing="0" cellpadding="0">
      <tbody>
          <tr class="_51mx">
             <td class="_51m- prs uiOverlayFooterMessage">
             <td class="_51m- uiOverlayFooterButtons _51mw">
                <a class="_42ft _4jy0 layerCancel uiOverlayButton _4jy3 _517h _51sy" href="#" role="button">Cancel</a>
                <button class="_42ft _4jy0 layerConfirm uiOverlayButton _4jy3 _4jy1 selected _51sy" type="submit" value="1">Save</button>
             </td>
         </tr>
      </tbody>
   </table>
</div>

这是我的代码:

driver.find_element_by_xpath(".//button[@class='_42ft _4jy0 layerConfirm uiOverlayButton _4jy3 _4jy1 selected _51sy']") 

如何点击“保存”按钮关闭弹出窗口?非常感谢 :)
2个回答

3
您可以在单击按钮之前滚动到它。
from selenium.webdriver.common.action_chains import ActionChains

button = driver.find_element_by_xpath(".//button[@class='_42ft _4jy0 layerConfirm uiOverlayButton _4jy3 _4jy1 selected _51sy']")
ActionChains(driver).move_to_element(button).perform()
button.click()

糟糕!我不需要滚动,因为弹出窗口显示在主屏幕上,但你的代码运行得非常好 :) - NGuyen
@NGuyen 或许“滚动”不是正确的术语,毕竟该函数被称为“移动到元素”。 - Guy
是的。谢谢你让我的一天变得美好 :) - NGuyen

1

试试这个

driver.find_element_by_xpath("//button[text() = 'Save']").click()

它显示一个错误:元素在该点不可点击。我认为Selenium点击了另一个位置。 - NGuyen
它没有点击其他位置。保存按钮可能被某些东西覆盖了吗?比如标题,或者取消按钮? - Mobrockers
它显示“其他元素将接收点击:<div class =“_3ixn”> </ div>”。我在弹出窗口外单击并在Firebug中看到<div class =“_3ixn”> </ div>。 - NGuyen
那个 div 必须在你的按钮之上渲染。 - Mobrockers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接