自动化测试——Selenium

01 元素操作方法

方法:
1、.send_keys()  # 输入方法
2、.click()  # 点击方法
3、.clear()  # 清空方法

    注意:

    在输入方法之前一定要清空操作!!

    # 导包
    from time import sleep
    from Selenium import webdriver
    
    # 实例化浏览器
    driver = webdriver.Chrome()
    
    # 打开网址
    driver.get('https://www.baidu.com/')
    
    # 需求
    ele = driver.find_element_by_css_selector('#kw')
    ele.send_keys('易烊千玺')
    sleep(2)
    
    # 清空
    ele.clear()
    ele.send_keys('王嘉尔')
    
    # 时间轴看效果
    sleep(3)
    
    # 关闭页面
    driver.quit()
    

      在这里插入图片描述

      02 浏览器操作方法

      常用的浏览器操作系统API

      # 方法
      """
      1、driver.maximize_window()  # 最大化浏览器
      2、driver.set_window_size(w,h)  # 设置浏览器大小 单位像素 【了解】
      3、driver.set_window_position(x,y)  # 设置浏览器位置  【了解】
      4、driver.back() # 后退操作
      5、driver.forward() # 前进操作
      6、driver.refrensh() # 刷新操作
      7、driver.close() # 关闭当前主窗口(主窗口:默认启动那个界面,就是主窗口)
      8、driver.quit() # 关闭driver对象启动的全部页面
      9、driver.title # 获取当前页面title信息
      10、driver.current_url # 获取当前页面url信息
      """
      
        """
        应用:
        driver.maximize_windows()  # 窗口最大化   
        driver.set_window_size(w,h) # 设置浏览器大小 【了解】   
        driver.set_window_position(x,y) # 设置浏览器窗口位置 【了解】
        """
        
        from time import sleep
        from Selenium import webdriver
        
        driver = webdriver.Chrome()
        
        driver.get('https://www.baidu.com/')
        # 窗口最大化
        driver.maximize_window()
        sleep(1)
        # 设置浏览器宽,高 【了解】
        driver.set_window_size(1000, 1000)
        sleep(1)
        # 设置窗口浏览器位置  【了解】
        driver.set_window_position(200, 200)
        
        sleep(3)
        
        driver.quit()
        

          在这里插入图片描述

          """
          driver.back()
          driver.forward()
          driver.refresh()
          """
          
          from time import sleep
          from Selenium import webdriver
          
          driver = webdriver.Chrome()
          
          driver.get('https://www.sogou.com/')
          driver.find_element_by_css_selector('#query').send_keys('易烊千玺')
          driver.find_element_by_id('stb').click()
          sleep(2)
          
          # 后退driver.back
          ()sleep(2)
          
          # 前进driver.forward()
          sleep(2)
          
          # 刷新
          driver.refresh()
          
          sleep(3)
          
          driver.quit()
          

            在这里插入图片描述

            """
            driver.close() # 关闭当前主窗口,默认启动的界面就是主窗口
            driver.quit() # 关闭全部页面
            driver.title  # 获取页面标题
            driver.current_url  # 获取页面地址 
            """
            
            from time import sleep
            from Selenium import webdriver
            
            driver = webdriver.Chrome()
            
            driver.get('https://www.sogou.com/')
            driver.find_element_by_link_text('图片').click()
            
            # 这两个属性可以用来做断言使用
            print("当前页面标题:", driver.title)
            print("当前页面的url:", driver.current_url)
            
            # 这里关闭的是原始页面,而不是新的页面,只有完成页面切换才可以关闭新的页面
            # 场景:关闭单个页面使用
            driver.close()
            sleep(3)
            
            # 关闭浏览器驱动对象的所有页面
            driver.quit()
            

              注意:

              driver.close(),当前关闭的是主窗口,只有完成页面切换才可以关闭当前新的页面。

              提示

              1、driver.title和drivet.current_url是属性没有括号。应用场景:一般判断上不操作是否执行成功。

              2、driver.maximize_window()一般为前置代码放到获取driver地址后,进行浏览器窗口的最大化

              3、driver.refresh()向浏览器重新发出请求,刷新页面,在cookie会用到

              4、driver.close()和driver.quit()的区别:

              close():关闭当前主窗口

              quit():关闭由driver对象启动的所有页面

              如果只有一个窗口那么quit()和close()没有区别。

              03 获取元素信息操作

              常用元素信息操作API

              """
              方法:
              1、text 获取元素的文本;如:driver.text
              2、size 获取元素的大小:如:driver.size
              3、get_attribute 获取元素属性值;如:driver.get_attribute("id") ,传递的参数是元素的属性名
              4、is_displayed 判断元素是否可见 如:element.is_displayed()
              5、is_enabled 判断元素是否可用 如:element.is_enabled()
              6、is_selected 判断元素是否被选中 如:element.is_selected()
              """
              
                """
                text  获取元素文本 ,没有()
                size  获取元素大小 ,没有()
                get_attribute("属性名") 获取的是属性值
                """
                
                from time import sleep
                from Selenium import webdriver
                
                driver = webdriver.Chrome()
                
                driver.get('https://www.sogou.com/')
                ele = driver.find_element_by_id('query')
                print("目标元素尺寸:", ele.size)
                
                new_ele = driver.find_element_by_id('hanyu')
                print("目标元素文本:", new_ele.text)
                
                link = driver.find_element_by_link_text("图片")
                print("目标元素属性值:", link.get_attribute('id'))
                
                sleep(3)
                
                # 关闭浏览器驱动对象的所有页面
                driver.quit()
                
                  """
                  is_displayed() 判断元素是否可见,如:element.is_displayed
                  is_enabled() 判断元素是否可用, 如:element.is_enabled
                  is_selected() 判断元素是否被选中,如:element.is_selected
                  """
                  
                  from time import sleep
                  from Selenium import webdriver
                  
                  driver = webdriver.Chrome()
                  
                  driver.get('file:///D:/%E6%A1%8C%E9%9D%A2/page/%E6%B3%A8%E5%86%8CA.html')
                  # 判断元素是否可见,不可见并不代表不能定位
                  span = driver.find_element_by_name('sp1')
                  print("元素是否可见:", span.is_displayed())
                  
                  btn = driver.find_element_by_id('cancelA')
                  print("元素是否可用:", btn.is_enabled())
                  
                  check = driver.find_element_by_id('lia')
                  print("元素是否被选中:", check.is_selected())
                  
                  sleep(3)
                  
                  # 关闭浏览器驱动对象的所有页面
                  driver.quit()
                  

                    注意:

                    里面的返回的结果都是True和False。

                    04 鼠标操作(需要实例化鼠标对象)

                    1、我们有了鼠标为什么还要使用鼠标操作??

                    为了满足丰富的html鼠标效果,必须使用对应的方法。

                    2、鼠标时间对应的方法在那个类中?

                    ActionChains类,实例化鼠标对象

                    导包:

                    from Selenium.webdriver.common.action_chains import ActionChains
                    
                    • 1

                    3、鼠标事件常用的操作

                    """
                    1、context_click(element) # 右击
                    2、double_click(element)  #双击
                    3、double_and_drop(source, target)  # 拖拽
                    4、move_to_element(element)  # 悬停 【重点】
                    5、perform()  # 执行以上事件的方法 【重点】
                    """
                    

                      4.1鼠标右键及双击

                      """
                      鼠标操作:
                      context_click() 右键
                      double_click() 鼠标双击
                      """
                      from time import sleep
                      from Selenium import webdriver
                      from Selenium.webdriver import ActionChains
                      
                      driver = webdriver.Chrome()
                      driver.get('https://www.baidu.com/')
                      
                      # 定位目标
                      ele = driver.find_element_by_id('kw')
                      # 实例化 鼠标对象
                      action = ActionChains(driver)、
                      
                      # 鼠标右键
                      action.context_click(ele)
                      
                      # 鼠标双击
                      action.double_click(ele)
                      
                      # 鼠标执行操作!!!不执行没效果
                      action.perform()
                      
                      sleep(3)
                      
                      driver.quit()
                      

                        4.2鼠标拖拽

                        """
                        鼠标操作:
                        # 鼠标拖拽
                        action.drag_and_drop(source, target)
                        """
                        from time import sleep
                        from Selenium import webdriver
                        from Selenium.webdriver import ActionChains
                        
                        driver = webdriver.Chrome()
                        driver.get('file:///D:/%E6%A1%8C%E9%9D%A2/page/drag.html')
                        
                        red = driver.find_element_by_xpath('//*[@id="div1"]')
                        blue = driver.find_element_by_xpath('//*[@id="div2"]')
                        
                        # 实例化鼠标
                        action = ActionChains(driver)
                        # 鼠标拖拽
                        action.drag_and_drop(red, blue)
                        # 鼠标执行
                        action.perform()
                        
                        sleep(3)
                        
                        driver.quit()
                        

                          在这里插入图片描述

                          4.3鼠标悬停【重点】

                          """
                          鼠标操作:
                          # 鼠标悬停 【重点】
                          action.move_to_element(element)
                          """
                          
                          from time import sleep
                          from Selenium import webdriver
                          from Selenium.webdriver import ActionChains
                          
                          driver = webdriver.Chrome()
                          driver.get('https://www.baidu.com/')
                          driver.maximize_window()
                          ele = driver.find_element_by_id('s-usersetting-top')
                          
                          # 实例化鼠标
                          action = ActionChains(driver)
                          # 鼠标悬停
                          action.move_to_element(ele)
                          # 鼠标执行
                          action.perform()
                          
                          sleep(3)
                          
                          driver.quit()
                          

                            注意:

                            Selenium框架虽然提供了鼠标右键方法,但是没有提供选择右键菜单方法,可以通过键盘快捷键操作实现

                            05 键盘操作(不需要实例化对象)

                            1、说明:键盘对应的方法在Keys类中

                            # 包
                            from Selenium.webdriver.common.keys import Keys
                            

                              2、快捷键(这里只讲windows操作系统的快捷键):

                              CONTROL:Ctrl键

                              BACK_SPACE:等价于BACKSPACE(删除)

                              其他:可以藏奥Keys底层的定义

                              3、应用

                              # 单键
                              element.send_keys(Keys.XXX)
                              # 组合键
                              element.send_keys(Keys.XXX, 'a') # 注意这里的组合键都是小写
                              
                                """
                                键盘操作
                                """
                                from time import sleep
                                from Selenium import webdriver
                                from Selenium.webdriver.common.keys import Keys
                                
                                driver = webdriver.Chrome()
                                driver.get('https://www.baidu.com/')
                                
                                ele = driver.find_element_by_id('kw')
                                ele.send_keys('易烊千玺')
                                sleep(1)
                                ele.send_keys(Keys.BACK_SPACE)
                                sleep(1)
                                # 组合键 Ctrl + a 全选 ,注意这里的组合键都是小写
                                ele.send_keys(Keys.CONTROL, 'a')
                                sleep(1)
                                ele.send_keys(Keys.CONTROL, 'x')
                                sleep(1)
                                ele.send_keys(Keys.CONTROL, 'v')
                                
                                sleep(3)
                                
                                driver.quit()
                                

                                  在这里插入图片描述

                                  06 元素等待

                                  1、为什么要设置元素等待

                                  由于电脑配置或网络原因,在查找元素时,元素代码未在第一时间内被加载出来,而抛出未找到元素异常。

                                  2、什么是元素等待

                                  元素在第一次未找到时,元素等待设置的时长被激活,如果在设置的有效时长内找到元素,继续执行代码,如果超出设置的时长未找打元素,抛出未找到元素异常。

                                  3、元素等待分类

                                  隐式等待:针对全局元素生效;(讲这个)

                                  显示等待:稍微麻烦,有兴趣的可以下去了解,他是针对单个元素生效。

                                  隐式等待方法:

                                  driver.implicitly_wait(30) # 一般情况下设置30秒
                                  

                                    特色:

                                    1. 针对所有元素生效。
                                    2. 一般情况下为前置必写代码(1.获取浏览器驱动对象;2. 最大化浏览器;3. 设置隐式等待)
                                    """
                                    隐式等待
                                    """
                                    from time import sleep
                                    from Selenium import webdriver
                                    from Selenium.webdriver.common.keys import Keys
                                    
                                    driver = webdriver.Chrome()
                                    # 1、获取浏览器驱动对象
                                    driver.get('file:///D:/%E6%A1%8C%E9%9D%A2/page/%E6%B3%A8%E5%86%8CA%E7%AD%89%E5%BE%85.html')
                                    # 2、窗口最大化
                                    driver.maximize_window()
                                    # 3、设置隐式等待
                                    driver.implicitly_wait(30)
                                    ele = driver.find_element_by_id('userA')
                                    ele.send_keys('admin')
                                    
                                    sleep(3)
                                    
                                    driver.quit()
                                    

                                      07 下拉框(需要实例化下拉框)

                                      1、为什么单独使用下拉框?

                                      如果option选项没有value值的化,css定位或其他定位就不太方便。

                                      2、使用Select类

                                      1)、导包:fromSelenium.webdriver.support.selectimprotSelect

                                      2)、实例化下拉框:s=Select(element)

                                      3)、调用方法:s.select_by_index()索引从0开始

                                      3、Select类提供的方法

                                      1)、select_by_index()#通过索引定位

                                      2)、select_by_value()#通过value值

                                      3)、select_by_visible_text()#显示文本

                                      """
                                      Select类方法:
                                      需要实例化下拉框元素定位
                                      """
                                      from time import sleep
                                      
                                      from Selenium import webdriver
                                      from Selenium.webdriver.support.select import Select
                                      driver = webdriver.Chrome()
                                      driver.get('file:///D:/%E6%A1%8C%E9%9D%A2/page/%E6%B3%A8%E5%86%8CA.html')
                                      ele = driver.find_element_by_id('selectA')
                                      
                                      # 实例化下拉框
                                      s = Select(ele)
                                      
                                      # index 索引方法
                                      s.select_by_index(1)
                                      sleep(1)
                                      
                                      # value 属性值选择目标元素
                                      s.select_by_value('sz')
                                      sleep(1)
                                      
                                      # text 采用文本的方式选择目标信息
                                      s.select_by_visible_text('A北京')
                                      
                                      sleep(3)
                                      
                                      driver.quit()
                                      

                                        08 弹出框

                                        1、为什么要处理弹出框?

                                        一旦出现弹出框,如果不进行处理,则后续操作不可实现

                                        2、弹窗分类

                                        系统弹窗:JS实现

                                        自定义弹窗:前端代码封装

                                        3、对话框的分类:

                                        alert:警告框

                                        confirm:确认框

                                        prompt:提示框

                                        4、如何处理

                                        系统弹窗:上面的对话框处理方式都一样;

                                        步骤:
                                        1、需要切换到对话框  
                                        driver.switch_to.alert
                                        2、处理对话框  
                                        alert.text # 获取文本  
                                        alert.accept() # 接受  
                                        alert.dismiss() # 拒接
                                        
                                          """
                                          系统弹窗:
                                          切换对话框:driver.switch_to.alert
                                          同意:alert.accept()
                                          拒绝:alert.dismiss()
                                          """
                                          
                                          from time import sleep
                                          
                                          from Selenium import webdriver
                                          from Selenium.webdriver.support.select import Select
                                          
                                          driver = webdriver.Chrome()
                                          
                                          driver.get('file:///D:/%E6%A1%8C%E9%9D%A2/page/%E6%B3%A8%E5%86%8CA.html')
                                          
                                          driver.find_element_by_id('confirma').click()
                                          
                                          # 切换对话框
                                          alert = driver.switch_to.alert
                                          print("文本内容是:", alert.text)
                                          sleep(2)
                                          
                                          # 拒绝
                                          alert.dismiss()
                                          
                                          # 同意
                                          # alert.accept()
                                          
                                          sleep(3)
                                          driver.quit()
                                          

                                            自定义弹窗,由于可以鼠标右击检查选项获取元素信息,所以出现自行已弹窗的时候,直接定义目标元素,并进行移除操作即可。

                                            最后作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些软件测试的学习资源,希望能给你前进的路上带来帮助。

                                            软件测试面试文档

                                            我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

                                            测试文档模板

                                            图片

                                            测试简历模板

                                            图片

                                            视频文档获取方式:
                                            这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

                                            猜你喜欢

                                            转载自blog.csdn.net/2301_78843735/article/details/147092468
                                            今日推荐