Selenium WebDriver- 通过源码中的关键字找到我们要操作的句柄,用于多个窗口之间切换

Selenium WebDriver- 通过源码中的关键字找到我们要操作的句柄,用于多个窗口之间切换#encoding=utf-8 import unittest import time from selenium import webdriver from selenium.webdriver import ActionChains class VisitSogouByIE(unittest.T

Selenium

#encoding=utf-8
import unittest
import time
from selenium import webdriver
from selenium.webdriver import ActionChains

class VisitSogouByIE(unittest.TestCase):

    def setUp(self):
        #启动IE浏览器
        #self.driver = webdriver.Firefox(executable_path = "e:\\geckodriver")
        self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
        
    def test_identifyPopUpWindowByPageSource(self):
        # 导入多个异常类型
        from selenium.common.exceptions import NoSuchWindowException,TimeoutException
        # 导入期望场景类
        from selenium.webdriver.support import expected_conditions as EC
        # 导入By类
        from selenium.webdriver.common.by import By
        # 导入WebDriverWait类
        from selenium.webdriver.support.ui import WebDriverWait
        # 导入堆栈类
        import traceback
        # 导入时间模块
        import time
        url = "http://127.0.0.1/test_popup_window.html"
        # 访问自动以测试网页
        self.driver.get(url)
        # 显示等待找到页面上链接文字为“sogou 搜索”的链接元素,找到后点击它
        WebDriverWait(self.driver, 10, 0.2).until(EC.element_to_be_clickable \
                                                      ((By.LINK_TEXT, 'sogou 搜
'))).click()
        # 获取当前所有打开的浏览器窗口句柄
        all_handles = self.driver.window_handles
        # 打印当前浏览器窗口句柄
        print self.driver.current_window_handle
        # 打印打开的浏览器窗口的个数
        print len(all_handles)
        # 等待2秒,以便更好查看效果
        time.sleep(2)
        # 如果存储浏览器窗口句柄的容器不对空,再遍历all_handles中所有的浏览器句柄
        if len(all_handles) > 0:
            try:
                for windowHandle in all_handles:
                    # 切换窗口
                    self.driver.switch_to.window(windowHandle)
                    # 获取当前浏览器窗口的页面源代码
                    pageSource = self.driver.page_source
                    if u"搜狗搜索" in pageSource:
                        # 显示等待页面搜索输入框加载完成,
                        # 然后输入“sogou 首页的浏览器窗口被找到”
                        WebDriverWait(self.driver, 10, 0.2).until \
                            (lambda x: x.find_element_by_id("query")). \
                            send_keys(u"sogou 首页的浏览器窗口被找到")
                        time.sleep(2)
            except NoSuchWindowException, e:
                # 如果没找到浏览器的句柄,会抛出NoSuchWindowException异常,
                # 打印异常的堆栈信息
                print traceback.print_exc()
            except TimeoutException, e:
                # 显示等待超过规定时间后抛出TimeoutException异常
                # 打印异常的堆栈信息
                print traceback.print_exc()
        # 将浏览器窗口切换回默认窗口
        self.driver.switch_to.window(all_handles[0])
        # 断言当前浏览器窗口页面源代码中是否包含“你爱吃的水果么?”关键内容
        self.assertTrue(u"你爱吃的水果么?" in self.driver.page_source)
    



    def tearDown(self):
        # 退出IE浏览器
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

 

今天的文章Selenium WebDriver- 通过源码中的关键字找到我们要操作的句柄,用于多个窗口之间切换分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/47799.html

(0)
编程小号编程小号
上一篇 2023-09-04
下一篇 2023-09-04

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注