元素的选取
定位一个元素 | 含义 |
---|---|
find_element_by_id | 通过元素id属性定位 |
find_element_by_name | 通过元素name属性定位 |
find_element_by_xpath | 通过xpath表达式定位 |
find_element_by_link_text | 通过完成的超链接文本定位 |
find_element_by_partial_link_text | 通过部分超链接文本定位 |
find_element_by_tag_name | 通过标签名称定位 |
find_element_by_class_name | 通过类名进行定位 |
find_element_by_css_selector | 通过CSS Selector定位 |
如果要定位多个元素,把element
改成elements
即可(要注意,定位多个元素返回的是一个list类型的数据)
页面操作
type(elem)
>> selenium.webdriver.firefox.webelement.FirefoxWebElement
定位元素之后可以对元素进行操作:
-
.send_keys()
——发送关键字(键盘输入,也可以发送一些特殊键,from selenium.webdriver.common.keys import Keys
在这里面都有) -
.click()
——点击 -
.clear()
——清空
用Selenium实现百度搜索
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
dr = webdriver.Firefox()
dr.get(url)
elem = dr.find_element_by_name('wd')
elem.clear()
elem.send_keys(u'hello world')
elem.send_keys(Keys.ENTER)
- 对于<input>字段,只要找到那个WebElement(可以通过link_text来找),就可以用
send_keys(text)
来输入内容,再利用send_keys(Keys_ENTER)
回车……来提交表单。 - 特殊键Keys在
selenium.webdriver.common.keys
中。(from ~ import Keys) - 刷新按钮——
Webdriver.refresh()
同理还有back()
forward()
quit()
分别代表后退
前进
退出
元素拖拽
from selenium.webdriver import ActionChains
achtion_chains = ActionChains(driver)
action_chains.drag_and_drop(element, target).perfom()
窗口和页面frame的切换
driver.switch_to_window('windowName')
弹窗处理
alert = driver.switch_to_alert() #alert对象
alert_dismiss() # 关掉弹窗
Cookie 处理
#获取cookie
driver.get_cookies()
#添加cookies
driver.add_cookie(cookie) # 传入一个字典
等待
- 直接用
time.sleep()
让线程休眠。 - 隐式等待
先尝试发现某个元素,如果没能立刻发现,就是等待固定长度的时间。
driver = webdriver.Firefox()
driver.implicitly_wait(5) #等待5s
driver.get(url)
ele = driver.find_element_by_xxx() #第一时间没能找到就会延迟。
- 显示等待
等待一种条件触发,直到指定某一条件成立才继续执行。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
try:
elem = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "idname")))
finally:
driver.quit()