行为链
# 行为链
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
inputTag = driver.find_element_by_id('kw')
submintBtn = driver.find_element_by_id('su')
actions = ActionChains(driver)
actions.move_to_element(inputTag)
actions.send_keys_to_element(inputTag, 'python')
actions.move_to_element(submintBtn)
actions.click(submintBtn)
cookie
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
for cookie in driver.get_cookies():
print(cookie)
print('*'*50)
# 根据cookie值查询
print(driver.get_cookie('PSTM'))
# 删除一个cookie
driver.delete_cookie('PSTM')
print('*'*50)
print(driver.get_cookie('PSTM'))
# 删除所有cookie
driver.delete_all_cookies()
页面等待
1.隐式等待:调用driver.implicitly_wait
。那么在获取不可用元素之前,会先等待10秒中。示例代码如下:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 隐式等待
driver = webdriver.Chrome()
driver.get('https://www.douban.com/')
driver.implicitly_wait(5)
driver.find_element_by_id('form_email')
2.显示等待:显示等待是表明某个条件成立后才执行获取元素的操作,也可以在等待一段时间的时候指定一个最大的时间,如果超过这个时间那么久抛出一个异常。显示等待应该使用selenium.webdriver.support.exceppted_conditions
期望的条件和selenium.webdriver.support.ui.webDriiverWait
来配合完成。示例代码如下:
# 显式等待
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'form_email'))
)
3.一些其他的等待条件:
- presence_of_element_located:某个元素已经加载完毕了
- presence_of_al_element_ocated:网页中满足条件的所有元素都加载完毕了
- element_to_be_cliable:某个元素是可以点击了
切换页面
from selenium import webdriver
driver = webdriver.Chrome()
# 打开第一个子网页百度的界面
driver.get("https://www.baidu.com/")
# 打开第二个子网页都爸爸的界面
driver.execute_script("window.open('http://www.douban.com/')")
# 切换到第二个字网页的界面,如果不进行这一步,就算打开了两个子界面默认的url还是在第一个子网页
driver.switch_to.window(driver.window_handles[1])
# 打印当前页面的url
print(driver.current_url)
使用代理
from selenium import webdriver
opions = webdriver.ChromeOptions()
opions.add_argument("--proxy-server=http://27.188.64.70:8060")
driver = webdriver.Chrome(options=opions)
driver.get("http://httpbin.org/ip")
WebElement类
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
submintBtn = driver.find_element_by_id('su')
print(type(submintBtn))
# 获取按钮值
print(submintBtn.get_attribute('value'))
# 截图
driver.save_screenshot("baidu.png")