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()            #执行所有点存储的行为。

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Unique Encryption Keys 暴力学习map,vector 函数
    hdu 1250 Hat's Fibonacci
    匈牙利算法模板 图的二分匹配 hdu 2063 过山车
    hdu 4260 汉诺塔问题 The End of The World
    各种常见文件的hex文件头
    Ubuntu & node.js
    Linux周期性任务的执行指令配置
    MySQL各版本的性能特性(从4.0版本开始)
    Tsung 1.5.0 增加对 WebSocket 和 BOSH 的支持
    ShowSlow+Yslow环境搭建
  • 原文地址:https://www.cnblogs.com/yu2000/p/4246299.html
Copyright © 2011-2022 走看看