标签:end http nta 输入框 登陆 网站 解决问题 水平 nbsp
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)
标签:end http nta 输入框 登陆 网站 解决问题 水平 nbsp
原文地址:https://www.cnblogs.com/sxy-blog/p/13215544.html