selenium知识点案例补充
豆瓣模拟登陆
登录步骤分析
- 加载驱动
- 打开网页
- 切换登录模式
3.1 切换iframe
3.1.1 定位iframe
位置
3.1.2 切换
3.2 切换密码登录
3.2.1 定位登录密码
3.2.2 进行匹配(模糊匹配或者xpath
绝对索引)
3.2.3 点击切换
3.3 输入账号密码
3.3.1 找到账号输入框
3.3.2 输入账号xxxxxxx
3.3.3 找到密码输入框
3.3.4 输入密码xxxxxx
- 定位登录按钮
4.1 找到登录按钮位置(class_name
进行索引)
4.2 点击登录
模拟登陆实例展示
from selenium import webdriver
import time
# 1、加载驱动
driver = webdriver.Chrome()
# 2、打开网页
driver.get("https://www.douban.com/")
time.sleep(1)
# 3、切换登录模式
# Message: no such element: Unable to locate element: {"method":"css selector","selector":".account-tab-account on"}
# 3.1 切换iframe
# 找到ifram
iframe = driver.find_element_by_xpath('//*[@id="anony-reg-new"]/div/div[1]/iframe')
# 切换
driver.switch_to.frame(iframe)
# 3.2 定位(密码登录)
# 通过find_element_by_class_name去找时 里面最好不要有空格
"""
如果存在空格 则尝试用长一点部分的内容去匹配
li_tag = driver.find_element_by_class_name("account-tab-account")
通过xpath绝对索引也可以,且快捷
li_tag = driver.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]')
li_tag = driver.find_element_by_xpath('//li[contains(@class,"account-tab-account")]')
以上三种都可以
"""
# 补充模糊匹配
li_tag = driver.find_element_by_xpath('//li[contains(@class,"account-tab-account")]')
li_tag.click()
# 3.3输入账号密码
# 找到账号输入框
input_username = driver.find_element_by_id('username')
# 输入
input_username.send_keys('xxxxxxx')
# 找到密码输入框
input_pwd = driver.find_element_by_id('password')
# 输入
input_pwd.send_keys('xxxxxx')
time.sleep(1)
# 3.4点击登录按钮
# 定位登录按钮
btn = driver.find_element_by_class_name('btn-account')
# 点击
btn.click()
豆瓣模拟登陆总结
什么时候需要切换iframe
?
1、iframe
里面有一个链接
2、并且通过该链接打开的网页里面有你要操作的元素
3、就需要切换 再进行后续操作
无特殊属性定位的处理方式
1、copy XPath
(不推荐)
2、一直往上找 多找几层限制
模糊匹配 contains
:
li_tag=driver.find_element_by_xpath('//li[contains(@class,"account‐tab‐account")]')
待匹配属性值有空格的处理方式
1、先尝试用长的那部分
2、如果说长的短的都不行 一直往上找 多找几层限制
xpath: //ul[@class="tab‐start"]/li[@class="account‐tab‐
account on"]
鼠标行为链
简单的搜索行为
from selenium import webdriver
import time
from selenium.webdriver import ActionChains
# <class 'selenium.webdriver.common.action_chains.ActionChains'>
from selenium.webdriver.common.action_chains import ActionChains
# 1、加载驱动
driver = webdriver.Chrome()
# 2、进入网页
driver.get("https:www.baidu.com/")
time.sleep(1)
# # 输入搜索内容
# driver.find_element_by_id('kw').send_keys('python')
# # 点击搜索按钮
# driver.find_element_by_id('su').click()
# 鼠标行为链
action = ActionChains(driver)
# print(type(action))
# 定位搜索框
input_tag = driver.find_element_by_id('kw')
action.send_keys_to_element(input_tag, 'python')
# 定位按钮
click_btn = driver.find_element_by_id('su')
# action.click(click_btn)
action.send_keys_to_element(click_btn).click()
# 提交行为链
action.perform()