目录[-]
from selenium import webdriver
driver = webdriver.Chrome(executable_path='C:\Program Files (x86)\Google\Chrome\Application\chromedriver')
driver.maximize_window()
driver.set_window_size(480, 800)
driver.back()
driver.forward()
get_element_by_id() # id
get_element_by_name() # name
get_element_by_class_name() # class_name
get_element_by_tag_name() # tag_name
get_element_by_link_text() # link_text
get_element_by_partial_link_text() # 部分link_text
get_element_by_xpath() # xpath定位
get_element_by_link_text() # link_text
find_element_by_css_selector() # css定位
find_element_by_id("user_name").clear() # 清楚元素内容
find_element_by_id("user_name").send_keys("username") # 按键输入
find_element_by_id("dl_an_submit").click() # 单机元素
find_element_by_id("dl_an_submit").submit() # 提交表单
driver.find_element_by_name('tj_trnews').size # 元素尺寸
driver.find_element_by_name('tj_trnews').text # 返回元素文本
driver.find_element_by_name('tj_trnews').get_attribute('class') # 获取属性值
driver.find_element_by_name('tj_trnews').is_displayed() # 是否用户可见
from selenium.webdriver.common.action_chains import ActionChains
el = driver.find_element_by_name('tj_trnews') # 目标元素
ActionChains(driver).context_click(el).perform() # 右击目标元素
ActionChains(driver).double_click(el).perform() # 双击目标元素
source = driver.find_element_by_id('lg') # 目标元素原始位置
target = driver.find_element_by_id('kw') # 拖动的目标位置
ActionChains(driver).drag_and_drop(source, target).perform() # 拖动元素
ActionChains(driver).move_to_element(el).perform() # 鼠标移动的目标元素上
ActionChains(driver).click_and_hold(el).perform() # 移动到目标元素按下鼠标左键
from selenium.webdriver.common.keys import Keys
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("selenium") # 输入框输入内容
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE) # 从后删除一个字符(删除键)
driver.find_element_by_id("kw").send_keys(Keys.SPACE) # 输入空格
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a') # ctrl + a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') # ctrl + x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v') # ctrl + v 粘贴
driver.find_element_by_id("su").send_keys(Keys.ENTER) # 回车
有时候网页加载比较慢,如果程序没有等待就可能出现定位不到的情况。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 强制等待
time.sleep(5)
# 隐形等待
driver.implicitly_wait(30)
# 显性等待
element=WebDriverWait(driver, 10).until(lambda driver:driver.find_element_by_id("kw")) # 当找到id为kw的元素时才执行下一步。超时时间为10秒,默认每0.5秒检测一次。
对于frame嵌套的网站,一般只能操作外层的元素,如果需要进入frame内层就需要调用switch_to.frame()方法。
driver.switch_to.frame()
frame方法接收三种参数:frame name、index 和webelement
driver.switch_to.frame('frame_name')
driver.switch_to.frame(1)
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
要想在多个窗口之间切换,首先要获得每一个窗口的唯一标识符号(句柄)。通过获得的句柄来区别分不同的窗口,从而切换不同窗。
driver.get("http://example.com") # 打开一个窗口
now_handle = drvier.current_window_handle # 获取当前窗口句柄
driver.find_element_by_name('example').click() # 点击某个元素打开新的窗口(target="_black"的元素)
all_handle = drvier.window_handles # 获取所有窗口句柄
drvier.switch_to.window(now_handle) # 切换为第一窗口
driver.close() # 关闭当前窗口
webdriver处理下拉框首先定位到下拉框内容,然后click某个option即可
m=driver.find_element_by_id("ShippingMethod") # 首先定位到下拉框
m.find_element_by_xpath("//option[@value='10.69']").click() # 然后点击下拉框选项
driver.execute_script('Java Scrapt Code')
# 例如下拉浏览器滚动条
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
webdriver可以对cookie进行读取、增加、删除
get_cookies() # 获得所有 cookie 信息
get_cookie(name) # 返回特定 name 有 cookie 信息
add_cookie(cookie_dict) # 添加 cookie,必须有 name 和 value 值
delete_cookie(name) # 删除特定(部分)的 cookie 信息
delete_all_cookies() # 删除所有 cookie 信息