1 frame切换
1.1 切换到frame
wd.switch_to.frame(frame_reference)
其中,frame_reference可以是:
- frame元素的Id属性
- frame元素的name属性
- frame对应的WebElement对象
1.2 切回原来的主html
wd.switch_to.default_content()
1.3 示例
打开网址:https://cdn2.byhy.net/files/selenium/sample2.html,输出下图中所有的animal对象,然后点击“外部按钮“。
from selenium import webdriver
import time
wd = webdriver.Chrome(r'.\driver\chromedriver.exe')
wd.implicitly_wait(5)
wd.get('https://cdn2.byhy.net/files/selenium/sample2.html')
wd.switch_to.frame('frame1')
wd.switch_to.frame('innerFrame')
wd.switch_to.frame(wd.find_element_by_css_selector('iframe'))
elements = wd.find_elements_by_class_name('animal')
for element in elements:
print(element.text)
wd.switch_to.default_content()
wd.find_element_by_css_selector('#outerbutton').click()
time.sleep(5)
wd.quit()
2 窗口切换
2.1 切换新窗口
wd.switch_to.window(handle)
参数handle:操作窗口的句柄 WebDriver对象有window_handles属性,这是一个列表对象, 里面包括了当前浏览器里面所有的窗口句柄。所谓句柄,可以看成是对应网页窗口的一个ID,那么我们就可以通过类似下面的代码切换到对应的网页窗口:
for handle in wd.windao_handles:
wd.switch_to.window(handle)
if 'XXX' in wd.title:
break
2.2 切回原来的窗口
mainWindow = wd.current_window_handle
...
wd.switch_to.window(mainWindow)
2.3 示例
打开百度,点击第一条百度热搜并在搜索结果新窗口中将搜索框中的文字清空,然后回到老窗口中输入“Selenium”。
from selenium import webdriver
import time
wd = webdriver.Chrome(r'.\driver\chromedriver.exe')
wd.implicitly_wait(5)
wd.get("https://www.baidu.com/")
mainWindow = wd.current_window_handle
hotSearch = wd.find_element_by_css_selector('span.title-content-title')
hotSearchTitle = hotSearch.text
hotSearch.click()
for handle in wd.window_handles:
wd.switch_to.window(handle)
if hotSearchTitle in wd.title:
break
wd.find_element_by_id('kw').clear()
wd.switch_to.window(mainWindow)
wd.find_element_by_id('kw').send_keys('Selenium')
time.sleep(5)
wd.quit()
|