zoukankan      html  css  js  c++  java
  • selenium+常见操作

    1.多窗口操作

       有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。

       句柄(handle):识别浏览器窗口的属性

       获取当前窗口的句柄:driver.current_window_handle

       获取当前所以的句柄:driver.current_window_handles

       切换窗口:switch_to.window(all_h[1])(其中all_h[1]为需要访问窗口的句柄)

    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get("http://bj.ganji.com/")
    h = driver.current_window_handle
    driver.maximize_window()
    print (h)  # 打印首页句柄
    driver.find_element_by_link_text("工作").click()
    all_h = driver.window_handles
    print (all_h)     # 打印所有的句柄
    #获取list里面第二个直接切换
    driver.switch_to.window(all_h[1])
    print (driver.title)
    # 关闭新窗口
    #driver.close()
    # 切换到首页句柄
    driver.switch_to.window(h)
    # 打印当前的title
    print (driver.title)

    2.下拉框操作

       1. 基本思路:先定位select框,再定位select里的选项  

           定位select中的选项可以通过以下几种方式:

           select_by_index()  :通过索引定位
           select_by_value()  :通过value值定位
           select_by_visible_text() :通过文本值定位
           deselect_all()          :取消所有选项
           deselect_by_index()     :取消对应index选项
          deselect_by_value()      :取消对应value选项
          deselect_by_visible_text() :取消对应文本选项
          first_selected_option()  :返回第一个选项
          all_selected_options()   :返回所有的选项

            eg:s = driver.find_element_by_id(" ")

                   Select(s).select_by_visible_text(" ")

       2.直接通过xpath定位

          eg:driver.find_element_by_xpath(" ").click() 

    from selenium import webdriver
    from selenium.webdriver.support.ui import Select
    import time
    driver = webdriver.Chrome()
    driver.get('http://sahitest.com/demo/selectTest.htm')
    time.sleep(1)
    s1 = Select(driver.find_element_by_id('s1Id'))  # 实例化Select
    time.sleep(1)
    s1.select_by_index(1)  # 选择第二项选项:o1
    time.sleep(1)
    s1.select_by_value("o2")  # 选择value="o2"的项
    time.sleep(1)
    s1.select_by_visible_text("o3")  # 选择text="o3"的值,即在下拉时我们可以看到的文本
    time.sleep(1)

    三.弹出框的操作

         弹出框基本为三种:alert(只有确定按钮和x的按钮)confirm(比alert多个取消的按钮)promp(内含文本框)

         alert操作:

        1.先用switch_to_alert()方法切换到alert弹出框上

        2.可以用text方法获取弹出的文本 信息

        3.accept()点击确认按钮

        4.dismiss()相当于点右上角x,取消弹出框

         confirm操作:

         1.先用switch_to_alert()方法切换到alert弹出框上

         2.可以用text方法获取弹出的文本 信息

         3.accept()点击确认按钮

         4.dismiss()相当于点取消按钮或点右上角x,取消弹出框

         prompt操作

         1.先用switch_to_alert()方法切换到alert弹出框上

         2.可以用text方法获取弹出的文本 信息

         3.accept()点击确认按钮

         4.dismiss()相当于点右上角x,取消弹出框

         5.send_keys()这里多个输入框,可以用send_keys()方法输入文本内容

     四.滚动条操作  

       滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,

        这时候只能借助Js了,还好selenium提供了一个操作js的方法:

       execute_script(),可以直接执行js的脚本。

       scrollTo(x, y),第一个参数x是横向距离,第二个参数y是纵向距离

       1.#滚动到底部
        js = "window.scrollTo(0,document.body.scrollHeight)"
        driver.execute_script(js)

       2.#滚动到顶部
         js = "window.scrollTo(0,0)"
        driver.execute_script(js)

    from selenium import webdriver
    import time
    driver = webdriver.Chrome()
    driver.get("http://www.cnblogs.com/fenhong/")
    #print (driver.name)
    #滚动到底部
    js = "window.scrollTo(0,document.body.scrollHeight)"
    driver.execute_script(js)
    time.sleep(10)
    #滚动到顶部
    js = "window.scrollTo(0,0)"
    driver.execute_script(js)

    五.元素聚焦
       1.虽然用上面的方法可以解决拖动滚动条的位置问题,但是有时候无法确定我需要操作的元素

        在什么位置,有可能每次打开的页面不一样,元素所在的位置也不一样,怎么办呢?

       2.这个时候我们可以先让页面直接跳到元素出现的位置,然后就可以操作了。同样需要借助JS去实现。
       3.元素聚焦:

       target = driver.find_element_by_xxxx()
       driver.execute_script("arguments[0].scrollIntoView();", target)

    六.单选框,多选框操作

        判断是否选中:is_selected()

         选择的操作就直接定位到需要选择的框然后click()一下就好;全选时可以获取全部的选择框然后循环click()。

        

  • 相关阅读:
    flink 读取kafka 数据,partition分配
    Flink 报错 "Could not find a suitable table factory for 'org.apache.flink.table.factories.StreamTableSourceFactory' in the classpath"
    flume接收http请求,并将数据写到kafka
    【翻译】Flume 1.8.0 User Guide(用户指南) Processors
    【翻译】Flume 1.8.0 User Guide(用户指南) Channel
    【翻译】Flume 1.8.0 User Guide(用户指南) Sink
    【翻译】Flume 1.8.0 User Guide(用户指南) source
    【翻译】Flume 1.8.0 User Guide(用户指南)
    Apache Flink 简单安装
    Java之使用IDE
  • 原文地址:https://www.cnblogs.com/fenhong/p/9176673.html
Copyright © 2011-2022 走看看