zoukankan      html  css  js  c++  java
  • 【Selenium2+Python】常用操作

    Webdriver中比较常用的操作元素的方法:

    clear()    清除输入框的默认内容

    send_keys("xxx")    在一个输入框里输入xx内容

    ——如果输入中文,则需要在脚本开头声明编码为utf-8,然后在中文字符前面加u(如:send_keys(u"中文内容"))

    click()    点击一个按钮

    submit()    提交表单

    WebElement接口常用方法

    size    返回元素的尺寸

    ——如:size = driver.find_element_by_id("id").size

    text    获取元素的文本

    ——如:text = driver.find_element_by_id("id").text

    get_attribute(name)    获得属性值

    ——如:attribute = driver.find_element_by_id("id").get_attribute('type')

    is_displayed()    设置该元素是否用户可见

    ——如:isshow = driver.find_element_by_id("id").is_displayed()

     

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

    引入ActionChains类:from selenium.webdriver.common.action_chains import ActionChains

    context_click()    右击

    ——如:RightClick = driver.find_element_by_id("id")

               ActionChains(driver).context_click(RightClick).perform()

    double_click()    双击

    ——如:DoubleClick = driver.find_element_by_name("name")

               ActionChains(driver).double_click(DoubleClick).perform()

    drag_and_drop(source, target)    鼠标拖放

    ——source:鼠标按下的源元素;target:鼠标释放的目标元素

    ——如:element = driver.find_element_by_name("name")

               target = driver.find_element_by_name("name")

               ActionChains(driver).drag_and_drop(element, target).perform()

    move_to_element()    鼠标悬停在一个元素上

    ——如:above = driver.find_element_by_xpath("xpath路径")

               ActionChains(driver).move_to_element(above).perform()

    click_and_hold()    按下鼠标左键在一个元素上

    ——如:left = driver.find_element_by_name("name")

               ActionChains(driver).click_and_hold(left).perform()

    键盘事件:

    引入Keys类包:from selenium.webdriver.common.keys import Keys

    send_keys()    输入框输入内容

    ——如:driver.find_element_by_id("id").send_keys("XXX")

    send_keys(Keys.BACK_SPACE)    向左删除一个字符                                              ——如:driver.find_element_by_id("id").send_keys("XXX")

    send_keys(Keys.SPACE)    输入空格

    ——如:driver.find_element_by_id("id").send_keys(Keys.SPACE)

    send_keys(Keys.CONTROL,'a')    ctrl+a 全选输入框的内容

    ——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,'a')

    send_keys(Keys.CONTROL,'x')    ctrl+x 剪切输入框的内容

    ——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,'x')

    send_keys(Keys.CONTROL,'v')    ctrl+v 粘贴到输入框

    ——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,'v')

    send_keys(Keys.ENTER)    回车代替点击

    ——如:driver.find_element_by_id("id").send_keys(Keys.ENTER)

    send_keys(Keys.TAB)    制表键(Tab)

    ——如:driver.find_element_by_id("id").send_keys(Keys.TAB)

    send_keys(Keys.ESCAPE)    回退键(Esc)

    ——如:driver.find_element_by_id("id").send_keys(Keys.ESCAPE) 

    send_keys(Keys.CONTROL,'c')    复制

    ——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,'c')  

    打印信息

    #获得title并打印

    title = driver.title

    print title

    #拿当前title名称进行预期比较

    if title == u"百度一下,你就知道":

      print "title yes!"

    else:

      print "title no!"

    #获得当前URL并打印

    url = driver.current_url

    print url

    等待时间

    #导入 WebDriverWait 包
    from selenium.webdriver.support.ui import WebDriverWait
    #导入 time 包
    import time

    sleep()    设置固定等待时间

    ——如:time.sleep(5)  #等待5秒

    implicitly_wait()    等待一个元素被发现,或一个命令完成,超出了设置时间则抛出异常

    ——如:driver.implicitly_wait(30)

               driver.find_element_by_id("id").click()

    WebDriverWait()    在设置时间内,默认每隔一段时间检测检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常

    WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

    ——driver:WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)

    ——timeout:最长超时时间,默认以秒为单位

    ——poll_frequency:休眠时间的间隔(步长)时间,默认为 0.5 秒

    ——ignored_exceptions:超时后的异常信息,默认情况下抛 NoSuchElementException 异常

    ——如1:element = WebDriverWait(driver, 10).until(lambda x : x.find_element_by_id("id"))

               element.send_keys("selenium")

    ——如2:element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(“Id”))

                is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())

    WebDriverWai()一般由 unit()或 until_not()方法配合使用:

    ——until(method, message=’’)
          调用该方法提供的驱动程序作为一个参数,直到返回值不为 False。
    ——until_not(method, message=’’)
          调用该方法提供的驱动程序作为一个参数,直到返回值为 False。

    定位一组对象

    #选择当前页面上所有tag name为input的元素

    inputs = driver.find_elements_by_tag_name('input')

    #从中过滤出type为checkbox的元素,并勾选上

    for input in inputs:

      if input.get_attribute('type') == 'checkbox':

        input.click()

    #使用CSS定位选择所有type为checkbox的元素,并勾选上

    checkboxes = driver.find_elements_by_css_selector('input[type=checkbox]')

    for checkbox in checkboxes:

      checkbox.click()

    #把最后一个checkbox的勾去掉    pop()为空则是最后一个

    driver.find_elements_by_css_selector('input[type=checkbox]').pop().click()

  • 相关阅读:
    动态规划最后一击
    leetcode N-Queens I && N-Queens II
    leetcode Spiral Matrix
    leetcode Submission Details
    由网易云音乐到算法体会
    leetcode Rotate Image
    线性表之双链表
    线性表之循环单链表
    线性表之单链表
    [HDU] 1561 The more, The Better 树形DP加01分组背包
  • 原文地址:https://www.cnblogs.com/BIGMOM/p/4311881.html
Copyright © 2011-2022 走看看