zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Visual Studio断点调试, 无法监视变量, 提示无法计算表达式
    ASP.NET MVC中MaxLength特性设置无效
    项目从.NET 4.5迁移到.NET 4.0遇到的问题
    发布网站时应该把debug设置false
    什么时候用var关键字
    扩展方法略好于帮助方法
    在基类构造器中调用虚方法需谨慎
    ASP.NET MVC中商品模块小样
    ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积02, 在界面实现
  • 原文地址:https://www.cnblogs.com/Maruying/p/13748519.html
Copyright © 2011-2022 走看看