• 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()
  • 相关阅读:
    SwiftUI 笔记
    SwiftUI 和 Combine 编程
    JQuery 总结(6) 锋利的jQuery
    offset scroll
    JQuery 总结(5)  总结各种小应用
    JQuery 总结(3) jQuery 各种事件
    JQuery 总结(2) jQuery 效果动画
    JQuery 总结(4) DOM操作
    sublime Text
    js总结(11) 语法字典 各种小应用
  • 原文地址:https://www.cnblogs.com/chang2021/p/13773748.html
Copyright © 2020-2023  润新知