zoukankan      html  css  js  c++  java
  • selenium定位:出现Message: element not interactable 元素不可交互的问题解决方案

    元素不可交互原因有多种,不同的原因有不同的解决方案。

    原因1:点击速度过快,页面没有加载出来就需要点击页面上的元素

    设置等待时间即可。

    import time
    time.sleep(2)

    原因2:需要定位的元素在页面中被隐藏了

    比如:定位百度账号退出按钮,由于退出按钮被隐藏,只有当鼠标移动到用户账号时,才显示出退出按钮

     解决方法:添加鼠标悬浮定位功能

    代码如下:

    # 鼠标悬停
    def hover(self,by,value):
        element = self.findElement(by,value)
        ActionChains(self.driver).move_to_element(element).perform()
    
    # 通过不同的方式查找界面元素
    def findElement(self,by,value):
        if(by == "id"):
            element = self.driver.find_element_by_id(value)
            return element
        elif(by == "name"):
            element = self.driver.find_element_by_name(value)
            return element
        elif(by == "xpath"):
            element = self.driver.find_element_by_xpath(value)
            return element
        elif(by == "classname"):
            element = self.driver.find_element_by_class_name(value)
            return element
        elif(by == "css"):
            element = self.driver.find_element_by_css_selector(value)
            return element
        elif(by == "link_text"):
            element = self.driver.find_element_by_link_text(value)
            return element
        else:
            print("无对应方法,请检查")
            return None
    
     # 检查是否存在用户退出按钮,存在,登录成功,否则登录失败
    self.driver.hover(by='xpath',value='//*[@id="s_username_top"]/span')
    close = self.driver.findElement(by='xpath',value='//[@id="s_user_name_menu"]/div/a[4]')
    print(close)
    if close != None:
        self.assertEqual(1,1)
    else:
        self.assertEqual(1,0)
        time.sleep(3)

    原因3:需要定位的元素的位置在变化

    比如:某项目登录功能密码输入框的id、xpath在变

    打开显示如下图

    密码输入显示如下图

     代码首先先点击密码输入框,再执行输入操作

    driver.find_element_by_id("cPwdMsg_0").click()
    driver.find_element_by_id("passwd").send_keys("123456")
  • 相关阅读:
    C库函数中字符串处理函数集合(转)
    浅谈C++底层机制
    vc2008快捷键
    Delphi格式输出的用法
    Devenv 命令行开关
    DX皮肤控制
    C#格式化
    linq查询DataView
    WCF中的session用法
    VS2012clickonce发布问题
  • 原文地址:https://www.cnblogs.com/String-song/p/12762062.html
Copyright © 2011-2022 走看看