• python之selenium操作隐藏元素


     
     
    getElementsByTagName
     
    GetElementsByTagName
    Fast traslate
    Icon translate

    一、html显示与隐藏元素的几种方法

    1、display

    • none:隐藏元素
    • block:显示为块级元素
    <p style='display:none;'>B元素</p>
    

    display: none 隐藏自身元素以及它的所有后代元素 ,隐藏后的元素不占据任何空间,不影响页面布局。

    2、visibility

    • hidden:隐藏
    • visible:显示
    <p style='visibility:hidden;'>B元素</p>

    visibility: hidden 隐藏自身元素,但隐藏后的元素空间依旧保留,仍然会影响页面布局。

    二、如何判断元素是否为隐藏

    1、is_displayed()

    使用is_displayed()方法查看这个元素,发现返回的是False,说明该元素不可见。
    driver.find_element_by_xpath("").is_displayed()

    2、在浏览器中查看元素,检查display和visibility的属性值,如:



    三、如何操作隐藏元素

    ①先定位到该元素;
    ②使用js语句修改属性,将隐藏属性修改为显示。

    PS:隐藏元素是仍可定位的,只是操作稍微复杂些。
    js = 'document.querySelectorAll("select")[0].style.display="block";'
    driver.execute_script(js)
    
    js = "document.getElementsByClassName('')[0].style.display='block'"  
    driver.execute_script(js) js
    = 'document.querySelectorAll("select")[0].style.display="block";' driver.execute_script(js) js = "document.querySelector('ul.sub-link li:nth-child(2)').click()" driver.execute_script(js)

    四、如何想富文本编辑器输入内容?

    最近在做项目的web后台自动化时,遇到富文本编辑器(php框架自带),通过以下方式,成功定位到该编辑器并输入内容:

    (1)首先定位到最外面的iframe框架

    (2)进入iframe框架

    (3)定位输入框写入内容

    (4)退出该iframe框架

    先定位外层的元素,由外至内。

    class A():
        iframe = pmanage.get_iframe    # 定位该iframe框架
        base.switch_to_iframe(iframe)    # 切换进入该iframe
        ecomon.get_name.send_keys("四大名著")    # 写入内容
        base.switch_to_parent()    # 返回父目录

    附:

    1、JS查找HTML元素的常用方法

    (1)通过id查找HTML元素
    document.getElementById(“some id”);


    (2)通过标签名查找HTML元素
    document.getElementsByTagName(“some tageName”);


    (3)通过类名查找HTML元素
    document.getElementsByClassName(“some className”);


    (4)通过css选择器查找HTML元素
    document.querySelector(“css表达式”);

    2、JS操作HTML元素的常用方法
    (1)点击操作click()
    document.getElementById(“some id”).click()


    (2)获取元素文本信息textContent
    document.getElementById(“some id”).textContent


    (3)改变某个元素的属性值
    document.getElementById(“some id”).attribute=new value;
    可以通过浏览器的控制台验证JS

    参考:https://blog.csdn.net/weixin_44169484/article/details/106173602

    参考:https://blog.csdn.net/qq_21046965/article/details/83792660

  • 相关阅读:
    codesmith+mysql生成代码
    遭遇笔试
    线性是一种简洁,简洁就是美
    Microsoft Kinect SDK vs PrimeSense OpenNI
    资料收集:让OpenCV使用IPP
    提纲
    在PC上安装使用Kinect
    OpenNI设置Kinect帧率,读取IR图
    cout,rather than printf
    单步调试时,getnextframe会失败。又
  • 原文地址:https://www.cnblogs.com/Maruying/p/13748519.html
Copyright © 2020-2023  润新知