• Webdriver之API详解(一)


    说明

      Webdriver API详解,基于python3,unittest框架,driver版本和浏览器自行选择。 本内容需要对python3的unittest框架有一个简单的了解,这里不再赘述,不了解的同学自己百度了解一下就可以了。废话不多说直接进入正题!

    简单代码框架模板

    from selenium import webdriver
    import unittest
    
    class MyTest(unittest.TestCase):
    
        def setUp(self):
            self.driver = webdriver.Chrome()
    11     def testFunc(self): # 后面所有的实例代码直接替换这个函数或者直接在代码中添加函数即可
            pass
        def tearDown(self):
            self.driver.quit()
    
    
    if __name__ == '__main__':
        unittest.main()

    ①访问某个网址

    目的:打开指定网址

    测试地址:https:www.baidu.com

    调用API实例代码:

    def testOpenBaiduUrl(self):
            '''
            1.访问具体地址
            :return:
            '''
            baseUrl = 'https://www.baidu.com/'
            baseTitle = '百度一下'
            self.driver.get(baseUrl)# 访问百度的网址
            currTitle = self.driver.title # 获取当前页面的标题
            self.assertIn(baseTitle, currTitle, msg='页面跳转失败') # 断言

    ②网页的前进,后退和刷新页面

    目的:模拟浏览器的前进和后退功能

    测试地址:

    https://www.sogou.com;https://www.baidu.com

    调用API实例代码:

    def testBackForwardRefresh(self):
            '''
            前进,后退,刷新当前页面
            :return:
            '''
            baseBaiduUrl = 'https://www.baidu.com/'
            baseSogouUrl = 'https://www.sogou.com/'
            self.driver.get(baseBaiduUrl)
            self.driver.get(baseSogouUrl)
            self.driver.back() # 后退
            print(self.driver.current_url)
            self.driver.forward() # 前进
            print(self.driver.current_url)
            self.driver.refresh() #刷新页面

     

    ③操作浏览器窗口位置

    目的:窗口最大化,获取浏览器位置坐标,设置浏览器窗口位置

    测试地址:https://www.baidu.com

    调用API实例代码:

    def testWindow(self):
            '''
            窗口最大化,获取当前窗口的位置,设置当前窗口的位置
            :return:
            '''
            baseBaiduUrl = 'https://www.baidu.com/'
            self.driver.get(baseBaiduUrl)
            position = self.driver.get_window_position()  # 获取当前窗口的位置坐标
            print('当前窗口的横坐标为{}'.format(position['x']))
            print('当前窗口的纵坐标为{}'.format(position['y']))
            self.driver.set_window_position(400, 200) # 设置窗口的位置
            print('设置后的窗口的位置坐标:{}'.format(self.driver.get_window_position()))
            self.driver.maximize_window() #窗口最大化

    ④操作浏览器窗口的大小

    目的:获取当前窗口的大小,设置当前窗口的大小

    测试地址:https://www.baidu.com

    调用API实例代码:

    def testWindowSize(self):
            '''
            获取当前窗口的大小,设置当前窗口的大小
            :return: 
            '''
            baseBaiduUrl = 'https://www.baidu.com/'
            self.driver.get(baseBaiduUrl)
            #获取当前窗口的大小
            windowSize = self.driver.get_window_size('current')
            print('当前窗口的宽为{}'.format(windowSize['width']))
            print('当前窗口的高为{}'.format(windowSize['height']))
            #设置当前窗口的大小
            self.driver.set_window_size(width=200, height=400, windowHandle='current')
            print(self.driver.get_window_size('current'))

    ⑤获取当前页面的Title属性值

    目的:获取百度页面的title属性值

    测试地址:https://www.baidu.com

    调用API实例代码:

    def testGetBaiduTitle(self):
            '''
            获取页面的title属性值
            :return: 
            '''
            baseBaiduUrl = 'https://www.baidu.com/'
            self.driver.get(baseBaiduUrl)
            bdTitle = self.driver.title # 获取百度页面的title属性值
            print(bdTitle)
            self.assertEqual(bdTitle,'百度一下,你就知道',msg='页面title不正确'

     ⑥获取页面的url地址与页面源码

    目的:获取百度页面的地址与源码

    测试地址:https://www.baidu.com

    调用API实例代码:

    def testGetBaiduUrlSourceCode(self):
            '''
            获取页面的url和页面源码
            :return:
            '''
            baseBaiduUrl = 'https://www.baidu.com/'
            self.driver.get(baseBaiduUrl)
            bdUrl = self.driver.current_url # 获取当前页面的url地址
            print(bdUrl)
            self.assertEqual(bdUrl,'https://www.baidu.com/',msg='当前页面url不正确')
            sourceCode = self.driver.page_source # 获取当前页面的源码v 
            print(sourceCode)

     ⑦获取与切换浏览器窗口句柄

    目的:获取当前窗口句柄,获取所有窗口句柄,句柄之间切换

    测试地址:https://www.baidu.com

    调用API实例代码:

    def testGetwindowHandle(self):
            '''
            获取当前页面的句柄,切换窗口
            :return:
            '''
            import time
            baseBaiduUrl = 'https://www.baidu.com/'
            self.driver.get(baseBaiduUrl)
            self.driver.maximize_window()
            # 获取当前窗口句柄
            current_handle = self.driver.current_window_handle
            print(current_handle)
            #百度搜索框输入selenium并点击百度一下
            self.driver.find_element_by_id('kw').send_keys('selenium')
            self.driver.find_element_by_id('su').click()
            time.sleep(3)
            #点击selenium的百度百科连接
            self.driver.find_element_by_partial_link_text('百度百科').click()
            #获取所有窗口的句柄
            all_handles = self.driver.window_handles
            print(all_handles)
            #打印新窗口的句柄
            print(self.driver.window_handles[-1])
            for handle in all_handles:
                # 切换到新的窗口
                if handle != current_handle:
                    self.driver.switch_to.window(handle)
                    self.driver.find_element_by_link_text('元素硒的英文名').click()
                    # 返回到原来的窗口
                    self.driver.switch_to.window(current_handle)
                    sendKeys = self.driver.find_element_by_id('kw')
                    sendKeys.clear()
                    sendKeys.send_keys('python')

     ⑧获取页面元素的基本信息

    目的:获取页面某个元素tagname,size,text

    测试地址:https://www.baidu.com

    def testGetElementInfo(self):
    
            baseBaiduUrl = 'https://www.baidu.com/'
            self.driver.get(baseBaiduUrl)
            self.driver.maximize_window()
            element = self.driver.find_element_by_xpath("//a[text()='新闻']")
            print('我的tag_name是{},我的text是{},我的size是{}'.format(element.tag_name,element.text,element.size))

    输出:我的tag_name是a,我的text是新闻,我的size是{'height': 24, 'width': 26}

    ⑨获取元素的CSS属性值

    目的:获取百度输入框的CSS属性值

    测试地址:https://www.baidu.com

    def testGetCssInfo(self):
            '''
            获取元素的css属性值
            :return: 
            '''
            baseBaiduUrl = 'https://www.baidu.com/'
            self.driver.get(baseBaiduUrl)
            self.driver.maximize_window()
            element = self.driver.find_element_by_id('kw')
            print(element.value_of_css_property('height'))# 获取搜索框的高
            print(element.value_of_css_property('width'))# 获取搜索框的宽
            print(element.value_of_css_property('font-family'))# 获取搜索框输入的字体

    输出:

    22px
    500px
    arial

    ⑩输入框输入指定内容,清空输入框中的内容

    目的:百度输入框输入python并清空内容

    测试地址:https://www.baidu.com

    def testInputClear(self):
            '''
            获取元素的css属性值
            :return:
            '''
            import time
            baseBaiduUrl = 'https://www.baidu.com/'
            self.driver.get(baseBaiduUrl)
            self.driver.maximize_window()
            element = self.driver.find_element_by_id('kw')
            element.send_keys('python')# 输入指定内容
            time.sleep(5)
            element.clear() # 清空输入框

    总结

      以上共10个实例,涉及到API有get(), send_keys(),clear(),text,maximize_window(),current_url, back(), forword(), refresh(), get_window_position(), get_window_size(), set_window_position, title, current_window_handle, window_handles, value_of_css_property()等十几个方法,都是实际工作中会经常会用到的,希望对大家有所帮助,后续会陆续更新其他的API用法。

  • 相关阅读:
    【树形dp】Find Metal Mineral
    【树形dp】Apple Tree
    【状压dp】Islands and Bridges
    【状压dp】Travelling
    【状压dp】Most Powerful
    【线段树】Mayor's posters
    【线段树】I Hate It
    【线段树】Atlantis
    【线段树】校门外的树
    【并查集】银河英雄传说
  • 原文地址:https://www.cnblogs.com/c-jw/p/13806734.html
Copyright © 2020-2023  润新知