Selenium模块的使用

Posted sxy-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium模块的使用相关的知识,希望对你有一定的参考价值。

selenium处理iframe
- 如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)
- 动作链(拖动):from selenium.webdriver import ActionChains
- 实例化一个动作链对象:action = ActionChains(bro)
- click_and_hold(div):长按且点击操作
- move_by_offset(x,y)
- perform()让动作链立即执行
- action.release()释放动作链对象

from selenium import webdriver
from selenium.webdriver import ActionChains
import time
bro = webdriver.Chrome(executable_path=./chromedriver.exe)
bro.get(https://c.runoob.com/front-end/61)
# iframe标签 可在当前页面下嵌套子页面
# 获得当前页面的子页面的标签
bro.switch_to.frame(iframeResult)  # 改变浏览器标签定位的作用域
div = bro.find_element_by_id(ha)
action = ActionChains(bro) # 实例化动作链
action.click_and_hold(div) # 点击长按指定的标签
for i in range(5):
    # move_by_offse(x,y) x水平方向 y竖直方向 移动
    # perform() 执行动作链操作
    action.move_by_offset(16,0).perform()
    time.sleep(0.3)

# 释放动作链
action.release()
bro.quit()

 

Selenium实现模拟登录

示例:QQ空间模拟登录

技术图片

from selenium import webdriver
import time
bro = webdriver.Chrome(executable_path=./chromedriver)
# 发送请求
bro.get(https://qzone.qq.com/)

# # 改变浏览器标签定位的作用域
bro.switch_to.frame(login_frame)

# 点击账号密码登陆
btn = bro.find_element_by_id(switcher_plogin)

# 点击按钮
btn.click()
time.sleep(1)

# 找到用户名 密码输入框
user = bro.find_element_by_id(u)
pwd = bro.find_element_by_id(p)

# 输入用户名 密码
user.send_keys(1121434897)
time.sleep(1)
pwd.send_keys(123456)
time.sleep(1)

# 找到登录按钮
submit = bro.find_element_by_id(login_button)

# 点击按钮
submit.click()
time.sleep(2)
bro.quit()

 

 

检测规避

现在不少大网站有对selenium采取了监测机制。比如正常情况下我们用浏览器访问淘宝等网站的 window.navigator.webdriver的值为

undefined。而使用selenium访问则该值为true。那么如何解决这个问题呢?

只需要设置Chromedriver的启动参数即可解决问题。在启动Chromedriver之前,

为Chrome开启实验性功能参数excludeSwitches,它的值为[‘enable-automation’],完整代码如下:

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_experimental_option(excludeSwitches, [enable-automation])
driver = Chrome(options=option)

 

以上是关于Selenium模块的使用的主要内容,如果未能解决你的问题,请参考以下文章

爬虫selenium模块

selenium模块的基本使用

Selenium JavascriptExecutor 详解

Selenium JavascriptExecutor 详解

Selenium模块的使用

python selenium片段+网络驱动程序