• 遭遇selenium定位元素大坑后总结:NoSuchElementException: Message: no such element: Unable to locate element:


    1.检查是不是元素可变(如动态id)

    2.元素定位方式是不是有错误

    3.页面重新渲染,变成旧的元素,再点击肯定会失败

         常见场景:1)循环点击删除按钮、2)点击页面按钮,页面重新渲染(比如AngularJs)

    4.页面嵌套了iframe

    #参数可以是id属性、name、直接定位到iframe的webElement。这里g_frame是id属性
    driver.switch_to.frame('g_frame')

    延伸:

      切换到主HTML:

     driver.switch_to.default_content()

      返回上一层frame:

     driver.switch_to.parent_frame()

    5.页面可能切换到新的窗口

      没有关注到页面跳转到新窗口了,定位元素,弄了差不多1小时吧,我脆弱的小心脏啊。。。。。。。。

      这里容易出现的问题:NoSuchWindowException: Message: no such window: window was already closed

                  或者NoSuchElementException: Message: no such element: Unable to locate element:

       

    #切换webview到新的窗口
    
    # 保存主窗口的handle
            mainwindow=self.driver.current_window_handle
    
            # 打开一个新的web页面
            for one in  driver.window_handles:
                driver.switch_to.window(one)
                if '下发学习任务' in  self.driver.title:
                    break
               
    #进行一些操作后 。。。。
    
    
    #回到主窗口
            driver.switch_to.window(mainwindow)
    虽然切换到【下发学习任务】窗口操作后,窗口会自动关闭。没有切换回主窗口,还是会报错NoSuchWindowException: Message: no such window: window was already closed

    解决方法:driver.switch_to.window(mainwindow)

    6.页面加载太慢,还没有加载出页面,就开始找元素   

  • 相关阅读:
    [CSP-S模拟测试]:甜圈(线段树)
    BZOJ4539 [Hnoi2016]树 【倍增 + 主席树】
    Myhchael原创题系列 Mychael vs Kid 【题解】
    BZOJ2668 [cqoi2012]交换棋子 【费用流】
    BZOJ1596 [Usaco2008 Jan]电话网络 【树形dp】
    BZOJ3427 Poi2013 Bytecomputer 【dp】
    BZOJ3526 [Poi2014]Card 【线段树】
    BZOJ3542 DZY Loves March 【map + 线段树】
    BZOJ3832 [Poi2014]Rally 【拓扑序 + 堆】
    HDU 1083
  • 原文地址:https://www.cnblogs.com/Lara1798/p/12944176.html
Copyright © 2020-2023  润新知