爬虫入门(10)——反爬(6)Selenium

目录

1 下拉框选择

 2 窗口截图

 3 无头浏览器

4 自动切换窗口


1 下拉框选择

有时我们会碰到下拉框,WebDriver提供了Select类来处理下拉框,如百度搜索设置的下拉框。但是我们完全可以用XPath()方法和click()方法来完成,后面如果遇到下拉框我们在补充Select方法。

如图所示:

代码如下:

#下拉框选择
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
import time
web = Chrome()
#访问百度首页
web.get('https://www.baidu.com/')
#鼠标悬停在设置键,并点击
web.find_element(by=By.XPATH,value='//*[@id="s-usersetting-top"]').click()
time.sleep(2)
#选择高级
web.find_element(by=By.LINK_TEXT,value='高级搜索').click()
time.sleep(2)
#全部时间选择
web.find_element(by=By.XPATH,value='//*[@id="adv-setting-gpc"]/div/div[1]/i[1]').click()
web.find_element(by=By.XPATH,value='//*[@id="adv-setting-gpc"]/div/div[2]/div[2]/p[5]').click()

 运行效果如下:

 2 窗口截图

自动化用例是由程序去执行的,因此有时候输出的错误信息并不是十分明确。如果在脚本执行出错的时候能够对当前窗口截图保存,那么通过图片就可以非常直观地看出出错的原因。WebDriver提供了截图函数get_screenshot_file()来截取当前窗口。

例如:

from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
web = Chrome()
#访问百度首页
web.get('https://www.baidu.com/')

web.find_element(by=By.ID, value="kw").send_keys("端午节",Keys.ENTER)
time.sleep(2)

#截取当前窗口,并制定截图图片的保存位置
web.get_screenshot_as_file("E:/PYTHON/venv/baidu.png")

运行结果如下:

 运行效果如下:

 3 无头浏览器

无头浏览器就是不在弹出浏览器窗口,程序在后台运行。

代码如下:

#无头浏览器
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

#准备好参数配置(无头)就是不显示页面了,不弹页面了
opt = Options()
opt.add_argument("--headless")

web = Chrome(options=opt)#把参数配置设置到浏览器中

web.get('https://www.baidu.com/')

4 自动切换窗口

假如我打开了百度首页上的新闻,但是想要回到百度首页,怎么办?下面我们就模拟自动切换窗口的操作。

 代码如下:

#自动切换窗口
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
import time

web = Chrome()
web.get("https://www.baidu.com/")
#首先点击菜单栏“新闻”,进入“新闻”子窗口
web.find_element(by=By.XPATH, value='//*[@id="s-top-left"]/a[1]').click()
time.sleep(1)
#在selenium中,新窗口是默认不切换的
web.switch_to.window(web.window_handles[-1])
#关掉子窗口
web.close()
#变更selenium的窗口视角,回到原来的窗口
web.switch_to.window(web.window_handles[0])

运行效果如下:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值