• selenim之ActionChains(一)


    大家好,来介绍下,今天要分享的是小编学ActionChains的经验。

    先来说一下今天要用到的方法:

    • click(element=null)                                 点击元素,参数为空时,鼠标在当前位置点击
    • send_keys(keys_to_send)                     向文本框发送文字、按键                                    
    • move_to_element(element)                   鼠标悬浮在某元素上
    • perform()                                               执行所有存储在ActionChains中的动作

    ActionChains是什么呢?顾名思义吧,是一个动作链,如果在一个用例中只有一两个动作,那么用之前讲过的简单版的就可以了,如果动作很复杂,那么可以使用这个了。

    • ActionChains是自动执行低级交互的一种方式,例如:鼠标移动,鼠标点按,键盘操作,文本操作等。
    • 当我们调用这里的方法时,这些操作会被先储存在一个队列中,当我们调用perform()方法时,队列中的操作会被按顺序执行,执行后队列被清空。

    首先来看如何引入这个包

    from selenium.webdriver.common.action_chains import ActionChains

    当然,我们还要引入wedbriver的包,用来启动浏览器

    from selenium import webdriver

    下面以火狐首页为例,以一个较复杂的用例,来介绍几个最常用最常用的操作,先来看下需要用到的元素

    第一组动作,在火狐首页,打开新浪新闻

    <li class="site-multiple site-dropdown" sid="10">
      <a class="dropdown-menu" href="http://www.sina.com.cn/" title="新 浪" style="45px">新 浪</a>
      <div class="site-dropmenu" style="display: block;">
        <a class="site-sub first" href="http://news.sina.com.cn/" title="新浪新闻">新浪新闻</a>
        <a class="site-sub " href="http://sports.sina.com.cn/" title="新浪体育">新浪体育</a>
        <a class="site-sub " href="http://finance.sina.com.cn/" title="新浪财经">新浪财经</a>
        <a class="site-sub " href="http://mil.news.sina.com.cn/" title="新浪军事">新浪军事</a>
      </div>
    </li>

    #定位新浪
    sina=driver.find_element_by_css_selector("a[title='新 浪']")
    #定位新浪新闻
    news=driver.find_element_by_css_selector("a[title='新浪新闻']")
    
    #定义ActionChains
    actions=ActionChains(driver)
    #鼠标移动到“新浪”上点击“新浪新闻”
    actions.move_to_element(sina).click(news).perform()

    第二组操作,在搜索栏搜索“鹿晗”,点击搜索

    <!-- 搜索框 -->
    <input class="cheadSeaKey" name="q" value="请输入关键词" onfocus="if(this.value=='请输入关键词'){this.value='';}" onblur="if(this.value==''){this.value='请输入关键词';}" autocomplete="off" type="text"/>
    <!-- 搜索按键 -->
    <input class="cheadSeaSmt" value="搜索" type="submit"/>
    actions=ActionChains(driver)
    keys=driver.find_element_by_css_selector("input[value='请输入关键词']")
    search=driver.find_element_by_css_selector("input[value='搜索']")
    keys.click()
    actions.send_keys(u"鹿晗")
    actions.click(search).perform()

     全部代码

    ActionChains1
    import time
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium import webdriver
    
    driver=webdriver.Firefox()
    driver.get("http://e.firefoxchina.cn/")
    time.sleep(3)
    print("打开网页成功")
    
    #定位
    sina=driver.find_element_by_css_selector("a[title='新 浪']")
    news=driver.find_element_by_css_selector("a[title='新浪新闻']")
    
    #定义动作
    actions=ActionChains(driver)
    actions.move_to_element(sina).click(news).perform()
    actions.perform()
    
    #切换窗口
    driver.switch_to_window(driver.window_handles[-1])
    print(driver.title)
    
    #第二组动作
    actions=ActionChains(driver)
    keys=driver.find_element_by_css_selector("input[value='请输入关键词']")
    search=driver.find_element_by_css_selector("input[value='搜索']")
    keys.click()
    actions.send_keys(u"鹿晗")
    actions.click(search).perform()

  • 相关阅读:
    BZOJ1854: [Scoi2010]游戏
    NOIP2017 【游记】
    NOIP2017 考前汇总
    最长上升子序列nlogn算法
    BZOJ3110 K大数查询 【线段树 + 整体二分 或 树套树(非正解)】
    BZOJ1089 [SCOI2003]严格n元树 【dp + 高精】
    BZOJ1072 排列perm 【状压dp】
    NOIP2003 传染病控制 【搜索 + 卡时】
    BZOJ 1070 修车 【费用流】
    [SCOI2005]最大子矩阵
  • 原文地址:https://www.cnblogs.com/wulisz/p/7640468.html
Copyright © 2020-2023  润新知