• selenium webdriver——多表单切换与多窗口切换


    多表单切换

    >>在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe

     表单内嵌页面上的元素无法直接定位。这时就需要通过suitch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面

     中。

     1 #Author:xiaoxiao
     2 from selenium import webdriver
     3 
     4 def setUp(self):
     5     # 打开浏览器
     6     self.driver = webdriver.Firefox()
     7     self.driver.implicitly_wait(10)
     8     self.driver.get("http://photo.163.com")
     9     # 找到登录模块对应的iframe
    10     self.driver.switch_to.frame(self.driver.find_element_by_xpath("//div[@id='J-loginMod']//iframe"))
    11     self.driver.switch_to.frame("x-URS-iframe")
    12     # 找到账号输入框并输入账号
    13     userinput = self.driver.find_element_by_name("email")
    14     userinput.clear()
    15     userinput.send_keys("yeyll0630")
    16     # 找到密码输入框并输入密码
    17     pwinput = self.driver.find_element_by_name("password")
    18     pwinput.clear()
    19     pwinput.send_keys("abc123")
    20     # 找到登录按钮并点击
    21     loginbutton = self.driver.find_element_by_id("dologin")
    22     loginbutton.click()
    23     # 切换到主页面
    24     self.driver.switch_to.default_content()

     

    多窗口切换

    >>在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。WebDriver提供了

     switch_to.window()方法,可以实现不同的窗口之间的切换。

     1 from selenium import webdriver
     2 
     3 def setUp():
     4     # 打开浏览器
     5     driver = webdriver.Firefox()
     6     driver.implicitly_wait(10)
     7     driver.get("http://photo.163.com")
     8     # 找到了解更多按钮并点击
     9     knowbutton = driver.find_element_by_link_text("了解更多")
    10     knowbutton.click()
    11     # 获取窗口句柄
    12     windowhanle = driver.current_window_handle  #当前窗口句柄
    13     windowhanles = driver.window_handles      #所有窗口句柄
    14     for handle in windowhanles:           #循环切换至新打开窗口
    15         if handle != windowhanle:
    16             driver.switch_to.window(handle)
    17     # 获取iphone按钮并点击
    18     iphonebutton = driver.find_element_by_id("J-iphone")
    19     iphonebutton.click()
  • 相关阅读:
    How to change the property of a control from a flowlayoutpanel?
    Add controls dynamically in flowlayoutpanel
    CLR via C# 读书笔记 6-2 不同AppDomain之间的通信 z
    应用程序域 z
    C# 在SQLite数据库中存储图像 z
    Using .NET 4's Lazy<T> 实现单实例
    tpl demo
    SQLite批量插入,修改数据库 zt
    Dev表格导出工具类 z
    easyui 设置一加载,搜索框立即弹出的效果
  • 原文地址:https://www.cnblogs.com/airener/p/5952021.html
Copyright © 2020-2023  润新知