zoukankan      html  css  js  c++  java
  • Python+selenium 【第四章】UI自动化元素操作鼠标/键盘事件

    UI自动化元素操作

      

    定位到元素后,需要对元素进行操作,常见的有鼠标点击、键盘操作等,这取决于我们定位到的对象支撑哪些操作。一般来说,所有与页面交互的操作都将通过WebElement接口。

    webdriver中常用的操作元素的方法


    clear():清除对象的内容

    driver.find_element_by_id(‘kw’).clear()


    send_keys():在对象上模拟按键输入
    driver.find_element(By.ID,‘kw’).send_keys(“12306”)


    click():单击对象,强调对象的独立性
    driver.find_element(By.ID,‘su’).click()


    submit():提交表单,要求对象必须是表单
    driver.find_element(By.ID,‘form’).submit()


    size:返回对象的尺寸
    driver.find_element_by_css_selector("#J_username").size


    text:获取对象的文本
    driver.find_element_by_css_selector(“a.sendpwd”).text


    get_attribute(“属性名”):获取对象的属性值
    driver.find_element_by_css_selector("#J_username").get_attribute(“name”)


    is_displayed():用来判断对象是否可见,即css的display属性是否为none
    driver.find_element_by_css_selector("#J_username").is_displayed()


    is_enabled():判断对象是否被禁用
    driver.find_element_by_css_selector("#J_username").is_enabled()


    is_selected():判断对象是否被选中
    driver.find_element_by_id(“head_checkbox”).is_selected()


    tag_name:获取对象标签名称
    driver.find_element_by_id(“head_checkbox”).tag_name


    location:获取元素坐标
    driver.find_element_by_id(“head_checkbox”).location

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 17:02
    # @Author : Limusen
    # @File : demo_ui_operation

    import time
    from selenium import webdriver


    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # # 1.获取文本元素信息 获取新闻
    # title = driver.find_element_by_xpath("//body[1]/div[1]/div[1]/div[3]/a[1]").text
    # print(title)
    #
    # # 2.获取元素属性 获取百度一下的属性
    # attribute = driver.find_element_by_css_selector("input#su").get_attribute('value')
    # print(attribute)

    # # 3.输入
    # driver.find_element_by_css_selector("input#kw").send_keys("测试一下输入")
    # time.sleep(2)
    # # 4.清除输入框内容
    # driver.find_element_by_css_selector("input#kw").clear()
    # time.sleep(2)

    # # 5.判断元素是否可见 如果元素可见则返回true
    # display = driver.find_element_by_css_selector('input#kw').is_displayed()
    # print(display)

    # # 6.判断元素是否被禁用 如果元素没有被禁用则返回true
    # enable = driver.find_element_by_css_selector('input#kw').is_enabled()
    # print(enable)

    # # 7.判断元素是否被选中 如果元素没有被选中则返回true
    # selected = driver.find_element_by_css_selector('input#kw').is_selected()
    # print(selected)

    # # 8.获取对象的标签名称
    # tag_name = driver.find_element_by_css_selector('input#kw').tag_name
    # print(tag_name)

    # # 9.获取元素坐标
    # location = driver.find_element_by_css_selector('input#kw').location
    # print(location)


    driver.quit()

    鼠标操作


    在实际的web产品测试中,对于鼠标的操作,不单单只有click(),有时候还要用到右击、双击、拖动等操作,这些操作包含在ActionChains类中。

    ActionChains类中鼠标操作常用方法:

    context_click():右击
    double_click():双击
    drag_and_drop():拖动
    move_to_element():鼠标移动到一个元素上
    click_and_hold():按下鼠标左键在一个元素上

    举例:鼠标右击操作
    from selenium.webdriver.common.action_chains
    import ActionChains

    mouse.context_click(元素对象).perform()

    模拟鼠标点击
    ActionChains(driver).click(元素对象).release(元素对象).perform()

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 17:23
    # @Author : Limusen
    # @File : demo_ui_mouse_07

    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    # 引入鼠标类
    from selenium.webdriver.common.action_chains import ActionChains

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # 创建鼠标对象
    mouse_action = ActionChains(driver)
    # 创建元素对象
    e1 = driver.find_element(By.XPATH, '//body[1]/div[1]/div[1]/div[3]/a[1]')
    # 操作鼠标点击对象
    # mouse_action.click(e1).release().perform()

    # 双击
    # el = driver.find_element(By.ID, "su")
    # driver.find_element(By.NAME, 'wd').send_keys("惆怅长岑长")
    # time.sleep(2)
    # mouse_action.double_click(el).perform()

    # 鼠标悬停
    el2 = driver.find_element(By.ID,'s-usersetting-top')
    mouse_action.move_to_element(el2).perform()
    time.sleep(2)
    driver.find_element(By.LINK_TEXT,'高级搜索').click()

    time.sleep(2)
    driver.quit()

    键盘操作

    在实际的web测试工作中,需要配合键盘按键来操作,webdriver的keys()类提供键盘上所有按键的操作,还可以模拟组合键Ctrl_a,Ctrl+c/v等。

    举例:

    from selenium.webdriver.common.keys import Keys#元素上按
    driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys(Keys.TAB)#利用ActionChains去进行按键操作
    ActionChains(driver).send_keys(Keys.TAB).perform()
    组合键操作:ctrl+c ,ctrl+v
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()

    备注:

    1、在使用修饰键的时候需要key_down()和key_up()方法修饰键 包含ctrl alt shift

    2、类似alt+F4ctrl+alt+delete不能使用

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 17:33
    # @Author : Limusen
    # @File : demo_ui_keyboard

    # 键盘操作

    # 常用鼠标键盘操作
    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.action_chains import ActionChains

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")
    # # 1.单键操作
    # driver.find_element(By.ID, 'su').click()
    # # 切换tab键
    # driver.find_element(By.ID, 'su').send_keys(Keys.TAB)

    # # 回退键
    # driver.find_element(By.NAME, 'wd').send_keys("95715")
    # time.sleep(1)
    # driver.find_element(By.ID, 'su').click()
    #
    # for i in range(1, 6):
    # driver.find_element(By.NAME, 'wd').send_keys(Keys.BACK_SPACE)
    # time.sleep(1)

    # 2.组合键
    # 方法一:普通操作
    # driver.find_element(By.ID, 'kw').click()
    # driver.find_element(By.ID,'kw').send_keys(Keys.COMMAND,'v')

    # 方法二:组合方法 必须先按下,然后在抬起来 key_down ==》 key_up
    ActionChains(driver).key_down(Keys.COMMAND).send_keys('v').key_up(Keys.COMMAND).perform()

    time.sleep(2)
    driver.quit()

    总结

    本章节主要讲述了常用api的操作,以及鼠标键盘的操作,下一章节我们将学习等待相关的知识,敬请期待~

    代码地址

    https://gitee.com/todayisgoodday/PythonSelenium

    CSDN地址

    https://blog.csdn.net/weixin_42382016/category_11566096.html

  • 相关阅读:
    ACM题目————STL练习之求次数
    ACM题目————STL + 全排列
    ACM题目———— 一种排序(STL之set)
    ACM第二站————STL之stack
    ACM题目————中位数
    ACM题目————Sunscreen
    ACM题目————区间覆盖问题
    ACM题目————困难的串
    ACM题目————A Knight's Journey
    ACM题目————Face The Right Way
  • 原文地址:https://www.cnblogs.com/yushengaqingzhijiao/p/15720495.html
Copyright © 2011-2022 走看看