微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

selenium学习记录1

    • selenium
      • 元素定位
        • 基本语句
          • find_element('key','value')
            • 有多个元素符合定位条件时仅返回第一个,若没有则抛出异常
          • find_element_by_key('value')
            • 有多个元素符合定位条件时仅返回第一个,若没有则返回none
          • find_elements('key','value')
            • 以列表形式返回符合条件的所有元素,若没有则返回空列表
        • 基础知识
          • 兄弟元素
            • 同缩进
          • 父子元素
            • 差级缩进
        • name
          • 有可能一个名字有多个元素共用,定位时只按顺序返回第一个
          • 使用find_elements('name','value')[num],使用list定位元素
          • 注:元素位置下标从0开始
        • class name(特指具有class属性的元素)
          • 包含多个类的元素叫复合样式,不能直接定位,可使用如下的css selector定位
        • tag name
          • 一般用于同类元素,比如说input
          • 返回同类元素的个数
            • elements = driver.find_elements('tag name', 'input') print(len(elements))
        • xpath(万能,可在chrome中$x调试)
          • 绝对路径法(需要从根逐级写到元素位置 )
            • ('xpath','/html/xxx..../xxx')
          • 相对路径法(从定位元素往上找到能唯一定位的父元素为止)
            • ('xpath','//唯一父元素/tr[3]/td[2]/xxx')
            • ('xpath','//唯一父元素/tr[3]//xxx')
            • 注:有省略时可同时使用多个//
            • 注:元素位置下标从1开始
          • 模糊定位
            • 模糊定位中的text()表示查找元素文本
            • ('xpath',"//元素标签或*号[contains(text(),‘元素中包含的文本关键字’)]")
            • ('xpath',"//元素标签或*号[contains(@属性名,‘属性中包含的关键字’)]")
          • 调试-在Chrome中检验Xpath的有效性
            • 调试台-Console
            • 语法:$x("Xpath")
        • css selector(万能,可在chrome中$$调试)
          • 利用元素标签定位所有相同的元素
            • find_element('css selector','tr')
          • id属性定位
            • id前加#
              • find_element('css selector','#属性名')
          • 属性定位
            • 注:元素位置下标从0开始
          • 利用标签父子关系定位
            • driver.find_element('css selector', 'tbody > tr:nth-child(1) > td:nth-child(2) > input')
            • 注:元素位置下标从1开始
            • 爷孙关系:可直接加空格
              • find_element('css selector', 'tbody > tr:nth-child(3) i')
          • 模糊定位:*=
          • 调试语法:$x("Xpath")
        • 总结
          • 方式选择
            • 优先考虑id,name等简单的定位方式
            • 一组元素优先考虑name或tag name
            • 链接用link text或partial link text
          • 注意事项
            • 优先相对路径
            • 不要使用唯一属性定位
            • 多与研发沟通,尽量加上id,name,减少不合理页面的元素,排除重复id
      • 元素等待
        • improt time
        • 强制等待
          • time.sleep()
          • 效率低,不能大量使用
        • 隐式等待
          • implicitly_wait()
          • 只需设置一次,全局有效
          • 设置的为最长等待时间
          • 元素出现即刻停止等待
        • 显示等待
          • 语法操作
            • 导入
              • from selenium.webdriver.support import expected_conditions as EC
            • 常见EC方法
              • title_is(strtitle)
                • 判断title是否为精确预期值
              • title_contains(strtitle)
                • 判断title是否包含指定字符串
              • presence_of_element_located(locator)
                • 判断元素是否在dom树内,不代表元素一定可见
              • visibility_of_element_located(locator)
                • 判断元素是否可见,可见代表非隐藏,并且元素宽高皆不为0
              • invisibility_of_element_located(locator)
              • element_to_be_clickable(locator)
                • 判断某个按钮元素是否可见并且enable的,这样的话才叫可点击
              • text_to_be_present_in_element(locator,txet)
                • 判断某个元素中的text是否包含预期字符串
            • 使用示例
              • webdriverwait(driver,5).until(EC.text_to_be_present_in_element(('id','msg'),'出错啦'))
              • 说明:locator为定位方法
          • 可针对每一个元素进行单独设置
          • 显示隐式等待同时设置,则以最长等待时间为准
      • 元素操作
        • 常用简单操作
          • clear
          • click
            • 点击
          • is_enabled
            • 判断是否可用
          • is-selected
            • 判断是否选中
        • 常用复合操作
          • 复选框常见操作
            • is_displayed() is_enabled() is_selected()
          • 发送复合按键
            • from selenium.webdriver.common.keys import Keys send_keys(Keys.SHIFT,"xxx")
              • 示例:send_keys(Keys.CONTRAL+'a')
                • 全选
          • 下拉列表常见3个操作
            • from selenium.webdriver.support.ui import Select
              • Select(driver.find_element('tag name', 'select')).select_by_index(3)
                • 以顺序选择
              • Select(driver.find_element('tag name', 'select')).select_by_value('sh')
                • 以value选择
              • Select(driver.find_element('tag name', 'select')).select_by_visible_text('成都')
                • 以文本选择
        • frame
          • switch_to.frame()
            • 从A frame切到B frame
          • switch_to.default_content()
            • 从B frame切回A frame
    •  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐