• Selenium3+python自动化008-常用操作


    一、元素常用操作

    1. clear()            清除文本

    2. send_keys()        模拟输入

    3. click()            单击元素

    4.get_attribute 获取元素属性

    5.driver.close() 关闭当前窗口

    6.driver.quite() 关闭所有窗口,结束driver运行

     1 from selenium import webdriver
     2 from time import sleep
     3 import os
     4 
     5 driver=webdriver.Chrome()
     6 # 窗口最大化
     7 driver.maximize_window()
     8 
     9 # os.getcwd()用法:执行文件(***.py文件)与html文件在同一目录下
    10 url='file:///' + os.getcwd()+'/html/注册A.html'
    11 driver.get(url)
    12 
    13 username=driver.find_element_by_id('userA')
    14 username.send_keys('admin')
    15 sleep(3)
    16 # 清除文本框内容
    17 username.clear()
    18 
    19 # 获取元素属性
    20 print(username.get_attribute('placeholder'))
    21 
    22 sleep(3)
    23 driver.quit()
    常用方法

    二、WebDriver操作鼠标键盘操作

    鼠标操作:

    1. 导包:from selenium.webdriver.common.action_chains import ActionChains
    2. 实例化ActionChains对象:Action=ActionChains(driver)

    说明:在WebDriver中将操作鼠标的方法封装在ActionChains类中

    (1)context_click() 右击 --> 此方法模拟鼠标右键点击效果
    (2)double_click() 双击 --> 此方法模拟鼠标双击效果
    (3)drag_and_drop() 拖动 --> 此方法模拟鼠标拖动效果
    (4)move_to_element() 悬停 --> 此方法模拟鼠标悬停效果
    (5)perform() 执行 --> 此方法用来执行以上所有鼠标方法

    # coding="utf-8"
    
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from time import sleep
    from selenium.webdriver.common.alert import Alert
    from time import time
    
    # driver = webdriver.Firefox()
    driver = webdriver.Chrome()
    url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
    
    driver.get(url)
    # 切换到目标元素所在的frame
    driver.switch_to.frame("iframeResult")
    # 确定拖拽目标的起点
    source = driver.find_element_by_id("draggable")
    # 确定拖拽目标的终点
    target = driver.find_element_by_id("droppable")
    # 形成动作链接
    actions = ActionChains(driver)
    actions.drag_and_drop(source, target)
    
    # 执行
    actions.perform()
    sleep(5)
    driver.quit()
    鼠标操作

    键盘操作:

    导包:from selenium.webdriver.common.keys import Keys

    ActionChains实现方法:
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').
    key_up(Keys.CONTROL).perform()

    模拟组合按键操作:

    1. send_keys(Keys.BACK_SPACE)删除键(BackSpace) 
    2. send_keys(Keys.SPACE)空格键(Space) 
    3. send_keys(Keys.TAB)制表键(Tab) 
    4. send_keys(Keys.ESCAPE)回退键(Esc) 
    5. send_keys(Keys.ENTER)回车键(Enter) 
    6. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A) 
    7. send_keys(Keys.CONTROL,'c')复制(Ctrl+C)
    8. send_keys(Keys.CONTROL,'v')粘贴(Ctrl+V)
    7. send_keys(Keys.CONTROL,'x')剪切(Ctrl+X)

     1 from selenium import webdriver
     2 from time import sleep
     3 import os
     4 # 导包
     5 from selenium.webdriver.common.keys import Keys
     6 
     7 driver=webdriver.Chrome()
     8 driver.maximize_window()
     9 url='file:///' + os.getcwd()+'/html/注册A.html'
    10 driver.get(url)
    11 
    12 '''
    13 需求:
    14     1). 输入用户名:admin1,暂停2秒 删除1
    15     2). 全选用户名:admin      暂停2秒
    16     3). 复制用户名:admin      暂停2秒
    17     4). 粘贴到密码框          暂停2秒
    18     5). 关闭浏览器
    19 '''
    20 
    21 # 定位用户名编辑框
    22 element=driver.find_element_by_id("userA")
    23 # 定位密码编辑框
    24 plassword=driver.find_element_by_id('passwordA')
    25 # 输入用户名
    26 element.send_keys("admin1")
    27 # 删除1
    28 element.send_keys(Keys.BACK_SPACE)
    29 # 全选
    30 element.send_keys(Keys.CONTROL,'a')
    31 # 复制
    32 # element.send_keys(Keys.CONTROL,'c')
    33 
    34 # 剪切
    35 element.send_keys(Keys.CONTROL,'x')
    36 
    37 # 粘贴
    38 plassword.send_keys(Keys.CONTROL,'v')
    39 
    40 sleep(3)
    41 driver.quit()
    键盘操作

    模拟键盘单个按键操作

    send_keys(Keys.F12)

    send_keys(Keys.ENTER)

     

    三、操作下拉列表 select方法

    1. select_by_index() --> 根据option索引来定位,从0开始
    2. select_by_value() --> 根据option属性 value值来定位
    3. select_by_visible_text() --> 根据option显示文本来定位

     1 # 导入Webdrive包
     2 from selenium import webdriver
     3 from time import sleep
     4 import os
     5 
     6 # 导入select类
     7 from selenium.webdriver.support.select import Select
     8 # 实例化浏览器对象
     9 driver=webdriver.Chrome()
    10 url='file:///' + os.getcwd()+'/html/注册A.html'
    11 driver.get(url)
    12 
    13 '''
    14 定位option方式:
    15 find_elements_xxx()
    16 tag_name:option--演示
    17 css selector--演示
    18 Xpath
    19 '''
    20 # 第一种方法:使用tag_name
    21 '''
    22 options=driver.find_elements_by_tag_name("option")
    23 for el in options:
    24     if el.text=="A上海":
    25         sleep(2)
    26         #点击
    27         el.click()
    28 for el in options:
    29     if el.get_attribute("value")=="cq":
    30         sleep(2)
    31         #点击
    32         el.click()
    33 for el in options:
    34     if el.text=="A广州":
    35         sleep(2)
    36         #点击
    37         el.click()
    38 '''
    39 # 第二种方法-select类
    40 # 第一步实例化Select
    41 select=Select(driver.find_element_by_css_selector("#selectA"))
    42 
    43 sleep(2)
    44 select.select_by_visible_text('A上海')
    45 sleep(2)
    46 select.select_by_value("sh")
    47 sleep(2)
    48 select.select_by_index(2)
    49 
    50 #打印所有的选中项文本
    51 for option in select.all_selected_options:
    52     print(option.text)
    53 
    54 sleep(2)
    55 driver.quit()
    下列列表

    四、多窗口切换

    说明:在WebDriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法;
    (句柄:英文handle,窗口的唯一识别码)

    方法:
    1). driver.current_window_handle --> 获取当前窗口句柄
    2). driver.window_handles --> 获取所有窗口句柄
    3). driver.switch_to.window(handle) --> 切换指定句柄窗口

     1 # 导入Webdrive包
     2 from selenium import webdriver
     3 from time import sleep
     4 import os
     5 
     6 # 实例化浏览器对象
     7 driver=webdriver.Chrome()
     8 url='file:///' + os.getcwd()+'/html/注册实例.html'
     9 driver.get(url)
    10 '''
    11 1. 获取注册实例.html当前窗口句柄
    12 2. 点击注册实例.html页面中注册A页面
    13 3. 获取所有窗口句柄
    14 4. 遍历判断窗口句柄并切换到注册A页面
    15 5. 操作注册A页面元素,注册信息
    16 '''
    17 # 第一步获取当前窗口句柄
    18 cur_handle=driver.current_window_handle
    19 print('默认打开的窗口:',driver.window_handles)
    20 print('第一个窗口:',driver.current_window_handle)
    21 
    22 # 定位-点击注册A页面
    23 driver.find_element_by_css_selector("#ZCA").click()
    24 
    25 # 第三步:获取所有窗口句柄
    26 all_handles=driver.window_handles
    27 print('当前所有句柄',all_handles)
    28 
    29 driver.switch_to_window(all_handles[1])
    30 sleep(2)
    31 driver.close()
    32 print('关闭一个以后,打开的窗口:',driver.window_handles)
    33 
    34 driver.switch_to_window(all_handles[1])
    35 sleep(1)
    36 driver.close()
    37 driver.switch_to_window(all_handles[0])
    38 
    39 # 第四步:遍历(只有两个窗口)
    40 for handle in all_handles:
    41     print("遍历窗口handle为:",handle)
    42     if handle !=cur_handle:
    43         driver.switch_to.window(handle)
    44         # 填写注册A-注册信息
    45         driver.find_element_by_css_selector("#userA").send_keys("admin")
    46         driver.find_element_by_css_selector("#passwordA").send_keys("123456")
    47         driver.find_element_by_css_selector("#telA").send_keys("18611111111")
    48         driver.find_element_by_css_selector("#emailA").send_keys("123@qq.com")
    49 
    50 sleep(2)
    51 driver.quit()
    多窗口切换
  • 相关阅读:
    Docker-CentOS系统安装Docker
    Docker-准备Docker环境
    Docker系列-文章汇总
    商品订单库存一致性问题的思考
    java模板、工厂设计模式在项目中的重构
    2018Java年底总结
    java的AQS中enp没有同步代码块为啥是原子操作
    java使用awt包在生产环境docker部署时出现中文乱码的处理
    初探装饰器模式
    开灯问题
  • 原文地址:https://www.cnblogs.com/liunaixu/p/11083298.html
Copyright © 2020-2023  润新知