• Selenium Webdirver API(1)


    Selenium Webdirver API

    前提:引入webdriver包
    from selenium import webdriver

    1、创建浏览器对象
    driver = webdriver.Ie(executable_path="D:\IEDriverServer")#不同浏览器只需更改浏览器名称即可,如:webdriver.Chrome() webdriver.Firefox()

    2、打开网页 get
    driver.get("http://www.sogou.com") #打开搜狗首页

    3、控制浏览器前后移动 back forward
    driver.back() #返回上一个网页
    driver.forward() #前进到下一个网页

    4、强制刷新当前浏览器 refresh
    driver.refresh() #刷新浏览器,会等到刷新完才执行下一句代码

    5、设置超时 set_page_load_timeout
    driver.set_page_load_timeout(3) #网页加载3秒超时 ,抛出异常
    #捕获异常,使用程序能够继续执行下去
    try:
        driver.get("http://www.sogou.com)
    except Exception,e:
        print e

    6、窗口最大化 maximize_window
    driver.maximize_window() #窗口最大化

    7、获取当前窗口坐标 get_window_position
    driver.get_window_position() #获取当前的坐标
    #可以通过key-value方式获取坐标值
    driver.get_window_position()["x"]
    driver.get_window_position()["y"]

    8、设置当前窗口坐标 set_window_position
    driver.set_window_position(100,150)

    9、获取当前窗口大小 get_window_size()
    driver.get_window_size() #获取当前窗口大小
    #可通过key_value方法获取宽高值
    driver.get_window_size()["width"]
    driver.get_window_size()["height"]

    10、设置当前窗口大小 set_window_size
    driver.set_window_size(100,200)

    11、获取浏览器标题
    driver.title #标签页名称,可用来断言
    driver.get("http://www.sohu.com")
    assert u"搜狐" == driver.title

    12、获取当前网页源码
    driver.page_source #获取当前网页源码,格式为unicode
    #如果要保存为中文时,需要进行转码
    driver.page_source.encode("gbk","ignore")

    13、获取当前网页url地址
    driver.current_url #当前网页url

    14、切换句柄(获取和切换标签页/窗口) switch_to.window
    #获取当前窗口句柄
    driver.current_window_handle
    #获取浏览器所有打开的句柄
    driver.window_handles
    #切换句柄
    driver.switch_to.window(handle)

    代码:
    #encoding=utf-8
    import unittest
    import time
    from selenium import webdriver

    class VisitSogouByIE(unittest.TestCase):
        def setUp(self):
            #启动IE浏览器
            self.driver = webdriver.Ie(executable_path="D:\IEDriverServer")
        def test_operateWindowHandle(self):
            url = "http://www.baidu.com"
            #打开百度
            self.driver.get(url)
            #获取当前窗口句柄
            now_handle = self.driver.current_window_handle
            #打印当前获取的窗口句柄
            print now_handle
            #百度搜索输入框中输入“w3cschool”
            self.driver.find_element_by_id("kw").send_keys("w3cschool")
            #点击搜索按钮
            self.driver.find_element_by_id("su").click()
            #等待3秒,以便网页加载完成
            time.sleep(3)
            #点击w3cschool在线教程链接
            self.driver.find_element_by_xpath("//div[@id='1']/h3/a").click()
            time.sleep(5)
            #获取所有窗口句柄
            all_handles = self.driver.window_handles
            print "+++" ,self.driver.window_handles[-1]
            #循环遍历所有新打开的窗口句柄,也就是说不包括主窗口
            for handle in all_handles:
                if handle != now_handle:
                #输入待选择的窗口句柄
                #self.driver.switch_to_window(handle) #selenium3.x已经不推荐使用该方法
                # 切换窗口
                self.driver.switch_to.window(handle) #新方法
                #点击HTML5链接
                self.driver.find_element_by_link_text("HTML5").click()
                time.sleep(3)
                #关闭当前窗口
                self.driver.close()
            time.sleep(3)
            #打印主窗口句柄
            print now_handle
            #返回主窗口
            self.driver.switch_to.window(now_handle)
            time.sleep(2)
            self.driver.find_element_by_id("kw").clear()
            self.driver.find_element_by_id("kw").send_keys("wow")
            self.driver.find_element_by_id("su").click()
            time.sleep(5)
        def tearDown(self):
            self.driver.quit()

    if __name__ == "__main__":
        unittest.main()

  • 相关阅读:
    url中特殊字符被转义成编码后处理
    使用axios解决$.ajax不能下载文件问题
    ES6学习-封装一个分页插件
    input输入框延时防抖
    ES6学习-封装tab选项卡
    JS的forEach()map()遍历和jQuery的$.each()$.map()遍历
    JavaScript正则表达式实现批量替换实际案例
    点击页面出现爱心效果
    vue父子组件传值
    Vue——实现简易计算器
  • 原文地址:https://www.cnblogs.com/test-chen/p/10324581.html
Copyright © 2020-2023  润新知