zoukankan      html  css  js  c++  java
  • selenium报错Element is not clickable at point及四种解决方法

    点击报错

    使用Selenium时,触发点击事件,经常报如下异常:

    Element is not clickable at point
    1
    原因及解决方法

    无外乎四种原因

    未加载

    没加载出来就等待元素加载出来,再往下执行。
    可以使用python库time

    import time
    time.sleep(3)
    1
    2
    不过最好还是使用selenium自带WebDriverWait

    from selenium.webdriver.support.ui import WebDriverWait

    WebDriverWait(driver, 10).until(EC.title_contains("元素"))
    1
    2
    3
    WebDriverWait的具体用法请点击参考文档。

    在iframe里

    如果元素在iframe里,在窗口里找是找不到元素的,更是无法点击。所以,要切换到iframe里去找元素。

    driver.switch_to_frame("frameName") # 根据框架名来切换
    driver.switch_to_frame("frameName.0.child") # 子框架
    driver.switch_to_default_content() # 返回
    1
    2
    3
    其他相关切换,请点击参考文档

    不在视窗里,需要拉滚动条

    很多网站的列表页不是立马返回所有内容,是根据视图来显示的。所以,我们就需要拖动滚动条来把要获取的内容显示到视窗里才可以获取到。

    page = driver.find_element_by_partial_link_text(u'下一页')
    driver.execute_script("arguments[0].scrollIntoView(false);", page)
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, u'下一页'))).click()
    1
    2
    3
    关于下拉滚动条的内容可以参考博客

    要点击的元素被覆盖

    可以使用事件链来解决
    例如下拉菜单,通过hover,让子菜单显示,就可以点击了。

    menu = driver.find_element_by_css_selector(".nav")
    hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

    ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
    1
    2
    3
    4
    关于事件链详情,请点击文档。

    参考

    思路来源于网友半山,在此感谢半山。
    ————————————————
    版权声明:本文为CSDN博主「lilongsy」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/lilongsy/article/details/76152620

  • 相关阅读:
    IBM MQ 学习
    spring中配置监听队列的MQ
    数据库优化(二)
    设计模式
    VBA学习笔记(2)--新建word文档并插入文字
    VBA代码分行
    excel保存时出现“请注意,您的文档的部分内容可能包含了文档检查器无法删除的个人信息”
    Excel VBA 操作 Word(入门篇)
    win10无法使用内置管理员账户打开应用
    五笔字根拆分规则_字根拆分方法
  • 原文地址:https://www.cnblogs.com/wenjing2019/p/12034685.html
Copyright © 2011-2022 走看看