zoukankan      html  css  js  c++  java
  • 窗口切换

    import time
    from selenium import webdriver
    from selenium.webdriver import ChromeOptions
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as when
    
    
    class TestDemo:
        def test_01(self):
            service = Service(executable_path='chromedriver')
            with webdriver.Chrome(service=service) as browser:
                browser.implicitly_wait(5)
                browser.get("http://www.baidu.com")
                input_el = browser.find_element(By.XPATH, '//input[@id="kw"]')
                input_el.send_keys('柠檬班')
    
                # 点击百度一下
                search_btn = browser.find_element(By.ID, 'su')
                search_btn.click()
    
                # 显性等待
                # 1,等待器,设置倒计时
                # 2,等待条件,出现
                # 3,在超时前,如果等待条件出现了; 如果等待条件没出现,会报超时的错误
                wait = WebDriverWait(browser, timeout=5)
                condition = when.element_to_be_clickable( (By.LINK_TEXT, 'lemon.ke.qq.com/')  )
                lemon_link = wait.until(condition)
    
                # lemon_link = browser.find_element(By.LINK_TEXT, 'lemon.ke.qq.com')
    
                #
                #WebDriverWait(browser, timeout=10).until(when.element_to_be_clickable((By.LINK_TEXT, 'lemon.ke.qq.com/')))
    
                # 获取当前窗口
                print(browser.current_window_handle)
    
                # lemon_link = browser.find_element(By.LINK_TEXT, 'lemon.ke.qq.com/')
                lemon_link.click()
    
                # 打印所有的窗口名称 ['窗口1', '窗口2']
                print(browser.window_handles)
    
                # 有一个新页面生成
                # 切换到新页面
    
                browser.switch_to.window(browser.window_handles[-1])
    
                print(browser.current_window_handle)
    
                #
                browser.find_element(By.CSS_SELECTOR, '.agency-content')

    上面是普通的窗口切换,下面是iframe切换

    写个简单的有iframe的页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>py44</title>
    </head>
    <body>
        <h2 id="hello">hello</h2>
        <iframe id="i" name="f" src="http://www.testingpai.com" width="800px" height="600px"></iframe>
    
    
    </body>
    </html>

    切换到iframe

    import time
    from selenium import webdriver
    from selenium.webdriver import ChromeOptions
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as when
    
    
    class TestDemo:
        def test_01(self):
            service = Service(executable_path='chromedriver_95.exe')
            with webdriver.Chrome(service=service) as browser:
                browser.implicitly_wait(5)
                browser.get("file:///D:/vip%E7%8F%AD%E7%BA%A7/py44/day36_%E7%AD%89%E5%BE%85%E5%92%8C%E5%88%87%E6%8D%A2/iframe_web.html")
    
                browser.find_element(By.ID, 'hello')
    
                # 必须要切换到iframe当中
                iframe = browser.find_element(By.ID, 'i')
                browser.switch_to.frame(iframe)
    
                # iframe
                browser.find_element(By.XPATH, '//span[contains(text(), "排行榜")]')
    ## iframe
    ```python
    iframe = driver.find_element()
    driver.switch_to.frame(iframe)

    # 子页面的子页面
    sub_iframe = driver.find_element()
    driver.switch_to.frame(sub_iframe)

    # 切回主页面
    page.switch_to.default_content()
    # 退回到父级iframe
    page.switch_to.parent_frame()
    假如需要等待,iframe需要使用显性等待



  • 相关阅读:
    Maven配置--《maven实战》读书笔记
    设置定时任务
    C#中的==
    C# lock的应用
    JDK和JRE
    末尾不以.OK文件结尾的正则表达式匹配
    ftp访问空目录的返回
    正则表达式的结尾匹配
    匿名对象和匿名类
    匿名内部类的调用
  • 原文地址:https://www.cnblogs.com/wsfsd/p/15623451.html
Copyright © 2011-2022 走看看