python selenuim 行为链

selenuim行为链

python selenuim 行为链_第1张图片

具体url参考:http://selenium-python.readthedocs.io/api.html

python selenuim 行为链_第2张图片
python selenuim 行为链_第3张图片
python selenuim 行为链_第4张图片

行为链事例

from selenium import webdriver
from selenium.webdriver import ActionChains

driver =webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 定位到输入框
inputTag =driver.find_element_by_id('kw')
# 定位到百度搜索按钮
button =driver.find_element_by_id('su')
# 实例化
actions =ActionChains(driver)
# 把鼠标移动到输入框里面
actions.move_to_element(inputTag)
# 输入内容
actions.send_keys_to_element(inputTag,'五一节快乐')
# 提交行为链的操作
actions.perform()

行为链后需要点击按钮button才可以,方法有两个,一个是在行为链之后——button.click()

python selenuim 行为链_第5张图片

方法2:在行为链中将鼠标转到button再click()

python selenuim 行为链_第6张图片
python selenuim 行为链_第7张图片

右键单击——context_click(element)

python selenuim 行为链_第8张图片
python selenuim 行为链_第9张图片

用selenuim获取cookie

python selenuim 行为链_第10张图片

from selenium import webdriver
import time
driver =webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 获取cooke get_cookies() 返回的是列表 所以用遍历
cookies =driver.get_cookies()
for cookie in cookies:
    print(cookie)

python selenuim 行为链_第11张图片

有用的是name和value

python selenuim 行为链_第12张图片

用这里的cookie来模拟登录qq空间

在这里插入图片描述

到达qq快速登录,点击头像登录空间

python selenuim 行为链_第13张图片
在这里插入图片描述

用json解析看数据

# 用这里的cookie模拟登录qq空间
driver =webdriver.Chrome()
driver.get('qq空间')
button =driver.find_element_by_class_name('face')
button.click()
# 获取cookie
cookies =driver.get_cookies()
print(type(cookies))
print('--'*50)#这里是列表
# 此时将python的列表转为json类型的字符串
# 将json转为python类型的是json.loads,将python的转为json 的是json.dumps
jsoncookies =json.dumps(cookies)
print(type(jsoncookies))

python selenuim 行为链_第14张图片
python selenuim 行为链_第15张图片

此时获取的cookie可以看到是在列表里面

正常cookie

python selenuim 行为链_第16张图片

此时,cookie获取了,为了保证cookie的获取,可以time.sleep()几秒等待加载完成

python selenuim 行为链_第17张图片

模拟登录

python selenuim 行为链_第18张图片

selenuim页面等待

方法一:time.sleep()

from selenium import webdriver
import time
driver =webdriver.Chrome()
driver.get('https://www.baidu.com/')
time.sleep(2)
driver.find_element_by_id('kw').send_keys('python')

隐形等待——implicitly_wait()

python selenuim 行为链_第19张图片

from selenium import webdriver
import time
driver =webdriver.Chrome()
driver.get('https://www.baidu.com/')
# time.sleep(2)
# 隐形等待
driver.implicitly_wait()
driver.find_element_by_id('kw').send_keys('python')

在这里插入图片描述

显示等待

# 显示等待
## 定位查询  查询按钮
driver.find_element_by_id("qd_closeDefaultWarningWindowDialog_id").click()
button =driver.find_element_by_id("query_ticket")
button.click()

python selenuim 行为链_第20张图片

# 显示等待
## 定位查询  查询按钮
driver.find_element_by_id("qd_closeDefaultWarningWindowDialog_id").click()
# 直接这样出发地目的地会红色——没有设置出发地和目的地
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 输入出发地
WebDriverWait(driver,50).until(
    EC.text_to_be_present_in_element_value((By.ID,"fromStationText"),'长沙')
)
WebDriverWait(driver,50).until(
    EC.text_to_be_present_in_element_value((By.ID,"toStationText"),'北京')
)
button =driver.find_element_by_id("query_ticket")
button.click()

此时满足条件(长沙到北京)显示等待条件满足,直接不用手动点查询(代码写了)就可以得到结果

python selenuim 行为链_第21张图片
python selenuim 行为链_第22张图片

多窗口

python selenuim 行为链_第23张图片

如果直接这样,会覆盖旧页面,而不是两个窗口

python selenuim 行为链_第24张图片

execute_script(“window.open(url)”)

python selenuim 行为链_第25张图片
python selenuim 行为链_第26张图片

但是此时问题在于,做的操作仍然是百度,当执行close()的时候,关闭的是百度,input标签输入的也是百度

在这里插入图片描述

这时要切换窗口才可以操作豆瓣

switch_to.window(driver.window_handles[切换窗口索引值])

python selenuim 行为链_第27张图片
在这里插入图片描述

你可能感兴趣的:(selenium,python,cookie)