selenium学习之切换网页(三)

在爬取网页时,有时候会需要在几个网页中进行切换,那么怎么利用selenium来模拟网页切换呢

 1 """如何切换网页窗口"""
 2 
 3 from selenium import webdriver
 4 
 5 if __name__ == "__main__":
 6     driver = webdriver.Chrome()
 7     driver.get('https://www.douban.com/')
 8 
 9     # 依次打开“电影”、“音乐”、“读书”标签的三个窗口
10     driver.find_element_by_xpath('//*[@id="anony-nav"]/div[1]/ul/li[2]/a').click()
11     driver.find_element_by_xpath('//*[@id="anony-nav"]/div[1]/ul/li[3]/a').click()
12     driver.find_element_by_xpath('//*[@id="anony-nav"]/div[1]/ul/li[1]/a').click()
13     # 还可以通过selector进行click
14     driver.find_element_by_css_selector('#anony-nav > div.anony-nav-links > ul > li:nth-child(2) > a').click()
15 
16     # 1.获取当前所有的窗口
17     current_windows = driver.window_handles
18     print(current_windows)    # 返回值为包含窗口值的list
19 
20     # 2.根据窗口索引进行切换
21     driver.switch_to.window(current_windows[1])

在爬取网页时,对于<body>标签中的<iframe>标签内容往往难以直接获取,因此我们在查找元素前要先切换到内联框架。

 1 """如何进入嵌套网页"""
 2 from selenium import webdriver
 3 
 4 if __name__ == "__main__":
 5     driver = webdriver.Chrome()
 6     driver.get('https://www.douban.com/')
 7 
 8     driver.switch_to.frame(0)    # 进入嵌套网页
 9     driver.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]').click()
10     # 定位到账号输入框,并输入手机号
11     driver.find_element_by_xpath('//*[@id="username"]').send_keys('注册过的手机号')
12     # 定位到密码输入框,并输入密码
13     driver.find_element_by_xpath('//*[@id="password"]').send_keys('设置的密码')
14     # 定位到登陆按钮,并点击
15     driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a').click()
原文地址:https://www.cnblogs.com/chang2021/p/13773748.html