【Python】Selenium之switch_to

一.switch_to简介

首先展示一个代码

    from selenium import webdriver
  
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    driver.get("https://tieba.baidu.com/")
    driver.back()
    driver.forward()

    driver.find_element_by_css_selector("a[title = '娱乐明星']").click()
    driver.close()

在这个之中,当我们使用关闭函数close()的时候程序会把百度的首页关闭,而不是之后打开的娱乐页。

这里就需要swith_to包里系列函数来切换。

二.switch函数用法简介:

1.切换tab(句柄handle)

  • 获取浏览器当前所在页签的句柄:
current_window_handle()
  • 获取所有页面窗口的句柄
driver.window_handles()

类型字符串

CDwindow-A89A78F7DC78910E558496ECB939EB82

获取的是全部窗口的句柄,类型

['CDwindow-A89E8A6898FCC59B15CB2EAE392EA644', 'CDwindow-5E725DF47772C2D7B7F5C7F357486EC2']

另外,源码中又是熟悉的Command语句以及execute

切换之后要确认是否切换成功

可以通过判断title确认是否切换成功,具体依照实际场景
这里以实际代码展示。

    driver = webdriver.Chrome()


    driver.get("https://tieba.baidu.com/")

    mydriver = WebDriver(driver)
    mydriver.click(("css","a[title = '娱乐明星']"))

    res_all = driver.window_handles
    print("所有页签handle:{}".format(res_all))

    title_first_page = driver.title
    print("切换前title {}" .format(title_first_page))

    # 将页面handle转到娱乐页
    driver.switch_to.window(res_all[1])

    # 获取当前页面的title(切换handle后)
    title_next_page = driver.title
    print("切换后title{}".format( title_next_page))
    driver.quit()

这里之前看到switch_to_window这个方法是无法使用的有删除线,就替换成switch_to.window()

切换窗口的等待设置

待补充

2.切换iframe

切换到iframe中,查看源码说明可以通过索引或者element(元素定位),或者framename切换

driver.switch_to.frame()


element = driver.find_element_by_css_selector("#result > iframe")
driver.switch_to.frame(element)
driver.switch_to.frame(1)

切换到主界面html

driver.switch_to.default_content()

多级嵌套,切换到父级的iframe

driver.switch_to.parent_frame()
等待
#等待新的iframe可用再切换
EC.frame_to_be_available_and_switch_to_it((By.TAG_NAME, 'iframe'))

3.切换弹窗

定位到alert弹窗,返回一个弹窗的对象

a = driver.switch_to.alert()

使用弹窗的方法

# 获取弹窗内的文本
a.text

# 对弹窗对象的确定操作。返回原来的页面
a.accept()
# 对弹窗对象的取消操作。返回原来的页面
a.dismiss()

4.cookies处理

# 添加 cookie
driver.add_cookie({'name':"yuze"})

# 获取
driver.get_cookie('name')

你可能感兴趣的:(编程代码学习)