• Selenium3(python版)(三)


    Selenium特殊情况处理:

    //例子网站:
    http://www.runoob.com/try/try.php?filename=tryjs_alert

        1)iframe内联框架

          ① switch_to.frame(可以是iframe的id也可以用使用八大定位)

          ② switch_to_frame(已经不使用了)

        def alert(self):
            driver = webdriver.Chrome()
            driver.get('http://www.runoob.com/try/try.php?filename=tryjs_alert')
            driver.switch_to.frame('iframeResult')
            driver.find_element_by_css_selector('body > input[type="button"]').click()
            time.sleep(5)
            driver.close()

        2)使用iframe后进入的iframe标签里面,对iframe标签外进行操作的时候需要跳出iframe

        def alert(self):
            driver = webdriver.Chrome()
            driver.get('http://www.runoob.com/try/try.php?filename=tryjs_alert')
            driver.switch_to.frame('iframeResult')
            # driver.find_element_by_css_selector('body > input[type="button"]').click()
            driver.switch_to.default_content()
            # driver.find_element_by_css_selector('body > nav > div > div > h1').click()
            driver.find_element_by_xpath('/html/body/nav/div/div/h1').click()
            time.sleep(5)
            driver.close()

        3)多重嵌套iframe,需要多次跳转,default_content()是直接返回主文档,而parent_frame()是返回上一级

        4)switch_to.alert

          ① accept----点击确认按钮

          ② dismiss----点击取消按钮

          ③ send_keys------输入内容

        def alert(self):
            driver = webdriver.Chrome()
            driver.get('http://www.runoob.com/try/try.php?filename=tryjs_alert')
            driver.switch_to.frame('iframeResult')
            driver.find_element_by_css_selector('body > input[type="button"]').click()
            driver.switch_to.alert.accept()
            time.sleep(5)
            driver.close()

        5)自定义弹窗:

    例子网站:
    http://www.xiucai.com/

          ① document.getElementsByClassName('new-register')[0].style.display='none' 

    def xiucai(self):
    driver=webdriver.Chrome()
    driver.get('http://www.xiucai.com/')
    time.sleep(20)
    js="document.getElementsByClassName('new-register')[0].style.display='none'"
    js2="document.getElementsByClassName('overlay1')[0].style.display='none'"
    driver.execute_script(js)
    driver.execute_script(js2)
    time.sleep(5)
    driver.close()

    Selenium窗口切换(多窗口):

        1)获取句柄:

          ①:获取所有句柄: driver.window_handles

          ②:获取当前句柄: driver.current_window_handle

       def win(self):
            driver = webdriver.Chrome()
            driver.get('http://home.baidu.com/')
            #获取当前句柄
            handle_baidu=driver.current_window_handle
            print(handle_baidu)
            driver.find_element_by_css_selector('#indexAdmin > div.main > div.main-body > div.full-section.news-section > div > div > div > div:nth-child(1) > a > div > div > div > img').click()

           ③跳转窗口: driver.switch_to.window()

    Selenium强制等待:

        强制等待:

        def time_sleep(self):
            time.sleep(5)

        隐式等待(最长等待30秒):

        def time_sleep(self):
            driver=webdriver.Chrome()
            driver.implicitly_wait(30)

        显示等待(配合until来使用,超时之后会报异常): from selenium.webdriver.support.wait import WebDriverWait

    from  selenium.webdriver.support.wait import WebDriverWait
    #判断
    from selenium.webdriver.support import  expected_conditions as  EC
    from selenium.webdriver.common.by import By
        def time_sleep(self):
            driver=webdriver.Chrome()
            driver.get('https://github.com')
            locator=By.ID,'user[login]'
        WebDriverWait(driver,30,0.5).until(EC.presence_of_all_elements_located(locator))
            driver.find_element_by_id("user[login]").send_keys("123456")

     Selenium日期控件:

      普通input输入框:

      只读日历控件(去掉只读属性):

    driver=webdriver.Chrome()
    driver.get('http://kyfw.12306.cn/otn/index/init')
    js='document.getElementById("train_date").removeAttribute("readonly")'
    driver.execute_script(js)
    driver.find_element_by_id('train_date').send_keys(2018-06-11)

    Selenium文件图片的上传方式:

    driver=webdriver.Chrome()
    driver.get('网址路径')
    driver.find_element_by_name('file').send_keys('上传文件路径')

        

    文章链接地址:http://mumuling.com/?p=85

  • 相关阅读:
    DropBoxUtil
    mtk camera faq
    android onInterceptTouchEvent和onTouchEvent的执行关系
    高通 camera open流程
    android 消息机制
    hierarchyviewer工具,android 布局分析
    关于屏幕的几个概念
    repo 使用
    launcher 壁纸相关
    launcher 点击和滑动屏幕过程分析
  • 原文地址:https://www.cnblogs.com/cpxjl/p/9156636.html
Copyright © 2020-2023  润新知