zoukankan      html  css  js  c++  java
  • selenium webdriver 学习笔记(二)

    selenium webdriver

    一、定位一组元素:

    webdriver可以很方便的使用findElement 方法来定位某个物定的对象。不过有时候我们却要定位一组对象,这时候就需要使用findElements方法。

    应用场景:

    1. 批量操作对象,比如将页面上所有checkbox都选择上;

    2.先获取一组对象,再在这组对象中过滤出需要定位的一些对象。比如定位页面上所有checkbox,然后再选择最后一个。

     

    二、多层框架、窗口定位

    switch_to_frame()

    switch_to_window()

    1. 多层框架定位 

    有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候要检查这个元素是否在一个frame中,selenium webdriver提供了一个switch_to_frame方法,可以很轻松的解决这个问题。

    示例:

    from selenium import webdriver

    import time

    import os

     

    browser = webdrivers.Firefox()

    file_path = 'file:///' + os.path.abspath('frame.html')

    browser.get(file_path)

    time.sleep(10)

    #先找到frame文件

    browser.switch_to_frame("f1")

    browser.switch_to_frame("f2")

    #然后就可以正常的操作元素了

    browser.find.element_by_id("kw").send_keys("Python")

    browser.find.element_by_id("su").click()

    time.sleep(3)

    browser.quit()

    2. 多层窗口定位

    有可能嵌套的不是框架,而是窗口,还有针对窗口的方法:

    switch_to_window方法与switch_to_frame相同

    示例:

    driver.switch_to_window("windowName")

     

    三、层级定位

    在实际的测试中,可能会遇到这种问题:页面上有很多个属性基本相同的元素,现在家需要具体定到其中的一个。由于发生基本相当,所以在定位的时候会有些麻烦,这个时候就需要用到层级定位。先定位到父元素,然后再通过父元素定位到子元素。

    from selenium.webdriver.supper.ui import WebDriverWait

    webDriverWait(dr,10)    #10s内每隔500ms扫描一次页面变化,当出现指定的元素后结束。

    is_displayed()        #该元素量是否用户可以见

    class ActionChains(driver)  #生成用户的行为。

    move_to_element(menu)    #移动鼠标到一个元素中,menu上面已经定义了它所指向的哪一个元素。

    perform()            #执行所有点存储的行为。

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    转:套接字
    转:Socket原理与编程基础
    转:rabbitmq——用户管理
    转:rabbitMQ 安装与管理
    转:window与linux互相拷贝文件
    转:Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序
    Rabbitmq集群
    VS2010 win7 64位安装后新建项目生成时错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    java连接sqlserver2008
    Java单体应用
  • 原文地址:https://www.cnblogs.com/yu2000/p/4246299.html
Copyright © 2011-2022 走看看