• 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()。

        

  • 相关阅读:
    【Android 界面效果23】LayoutInflater作用及使用
    【Android Api 翻译4】android api 完整翻译之Contacts Provider (学习安卓必知的api,中英文对照)
    【Android Api 翻译3】android api 完整翻译之Application Fundamentals (学习android必须知道的)
    【Mood-7】tell 2 my gf-miss u not sudden but always
    Android权限机制
    【Mood-6】空气显示触摸屏、智能钱夹
    【Android 界面效果22】Android的Tab与TabHost
    【Android 界面效果21】Android ViewPager使用详解
    【Android 界面效果20】Android GradientDrawable类的详解,设置activity的背景颜色渐变效果
    【Android 界面效果19】Android中shape的使用
  • 原文地址:https://www.cnblogs.com/fenhong/p/9176673.html
Copyright © 2020-2023  润新知