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

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    ACdream 1224 Robbers (贪心)
    HDU 4320 Arcane Numbers 1 (质因子分解)
    在脚本中重定向输入
    呈现数据
    shell中的for、while、until(二)
    shell中的for、while、until
    C 指针疑虑
    结构化命令
    fdisk -c 0 350 1000 300命令
    PC机上的COM1口和COM2口
  • 原文地址:https://www.cnblogs.com/yu2000/p/4246299.html
Copyright © 2011-2022 走看看