0


【selenium】窗口操作

selenium 窗口处理相关操作。

窗口操作

# 窗口最大化
driver.maximize_window()# 窗口最小化
driver.minimize_window()# 窗口全屏化
driver.fullscreen_window()# 获取窗口大小
size = driver.get_window_size()
width = size.get("width")
height = size.get("height")# 设置窗口大小
driver.set_window_size(1024,768)# 获取窗口左上角坐标位置
position = driver.get_window_position()
x = position.get('x')
y = position.get('y')# 设置窗口左上角坐标位置
driver.set_window_position(0,0)# 窗口截图
driver.save_screenshot('./image.png')# 对特定元素截图
ele = driver.find_element(By.ID,'su')
ele.screenshot('./image.png')

多窗口场景处理

网页上点击某个链接,有可能会打开一个新的标签页。这种情况,需要切换到新的窗口来执行后续操作。

每个窗口都有一个唯一标识句柄,通过句柄来切换窗口。

# 当前标签页
driver.current_window_handle

# 所有标签页
driver.window_handles

# 切换标签页
driver.switch_to.window(handle)# 关闭当前窗口
driver.close()# 关闭所有窗口,退出驱动
driver.quit()""" selenium > 4.0 """# 新建浏览器标签页并切换 handle
driver.switch_to.new_window('tab')# 新建浏览器窗体并切换 handle
driver.switch_to.new_window('window')

示例

from selenium import webdriver
from selenium.webdriver.common.by import By

class TestSwitchWindow:
    
    def setup(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(3)
        self.driver.get("http://www.baidu.com")

    def teardown(self):
        self.driver.quit()

    def test_switch_register_to_home(self):
        """ 百度首页,点击注册,会新打开一个注册页面;
            在注册页面输入账号密码后切换回第一个窗口
        """
        self.driver.find_element(By.LINK_TEXT, "登录").click()
        self.driver.find_element(By.LINK_TEXT, "立即注册").click()
        home_handle = self.driver.current_window_handle  # 当前窗口句柄

        windows = self.driver.window_handles  # 所有窗口句柄:list

        # 切换到最后一个窗口,也就是新打开的「注册」页面
        self.driver.switch_to.window(windows[-1])
        self.driver.find_element(By.ID, "TANGRAM__PSP_4__userName").send_keys("login_username")

        # 切换到第一个,输入用户名密码
        self.driver.switch_to.window(home_handle)
        # self.driver.switch_to.window(windows[0])
        self.driver.find_element(By.ID, "TANGRAM__PSP_11__userName").send_keys("login_username")

    def test_switch_windows_by_loop(self):
        """ 打开多个窗口,最后定位到「百度图片窗口」
        """
        home_handle = self.driver.current_window_handle  # 当前窗口句柄
        tab_texts = ["新闻", "视频", "图片", "贴吧"]
        for text in tab_texts:
            self.driver.find_element(By.LINK_TEXT, text).click()
            self.driver.switch_to.window(home_handle)

        for handle in self.driver.window_handles:
            self.driver.switch_to.window(handle)
            if "百度图片" in self.driver.title:
                break
        assert self.driver.title == "百度图片-发现多彩世界"

    def test_window_close(self):
        """ 通过百度首页打开新闻页面,然后关闭首页
        """
        home_handle = self.driver.current_window_handle
        self.driver.find_element(By.LINK_TEXT, "新闻").click()
        self.driver.close()
        # print(self.driver.title)  # 窗口关闭后,再次操作报错:NoSuchWindowException
        
        # 因为首页已经被关闭,需要手动切换到已存在的窗口上
        self.driver.switch_to.window(self.driver.window_handles[-1])
        assert "百度新闻" in self.driver.title
标签: selenium python

本文转载自: https://blog.csdn.net/lan_yangbi/article/details/127968172
版权归原作者 abee-tester 所有, 如有侵权,请联系我们删除。

“【selenium】窗口操作”的评论:

还没有评论