1.简单的例子
from selenium import webdriver # 导入浏览器驱动,用来连接浏览器
from selenium.webdriver.common.keys import Keys # 按键捕捉
driver = webdriver.Firefox() # 创建火狐浏览器的实例
driver.get("http://www.python.org") # 打开网页
assert "Python" in driver.title # 判断标题是否包含"python"
elem = driver.find_element_by_name("q") # 通过name属性获得元素
elem.clear() # 清空元素里面的内容
elem.send_keys("pycon") # 填写内容
elem.send_keys(Keys.RETURN) # 发送回车
assert "No results found." not in driver.page_source # 再次判断
driver.close() # 关闭浏览器
打开一个页面
driver.get("http://www.google.com") # 打开一个页面
2.1.input标签
假设有以下的标签
<input type="text" name="passwd" id="passwd-id" />
通过以下方法获得该元素
element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element = driver.find_element_by_xpath("//input[@id='passwd-id']")
通过以下方法交互
element.clear() # 清空内容
element.send_keys("some text") # 填写内容
element.send_keys(" and some", Keys.ARROW_DOWN) # 模拟键盘
2.2.select标签
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_name('name')) # 获得select对象
select.select_by_index(index) # 按索引选择
select.select_by_visible_text("text") # 按内容选择
select.select_by_value(value) # 按值选择
select.deselect_all() # 取消选择
options = select.options # 获得所有选项
all_selected_options = select.all_selected_options # 获得所有已选择的选项
driver.find_element_by_id("submit").click() # 提交表单
element.submit() # 提交表单的第二种方法,就近获得表单,并提交
2.3.移动元素
element = driver.find_element_by_name("source")
target = driver.find_element_by_name("target")
from selenium.webdriver import ActionChains
action_chains = ActionChains(driver)
action_chains.drag_and_drop(element, target).perform()
2.4.窗口之间移动
driver.switch_to_window("windowName")
2.5.弹窗
alert = driver.switch_to_alert()
2.6.访问历史数据
driver.forward()
driver.back()
2.7.cookies
# Go to the correct domain
driver.get("http://www.example.com")
# Now set the cookie. This one's valid for the entire domain
cookie = {‘name’ : ‘foo’, ‘value’ : ‘bar’}
driver.add_cookie(cookie)
# And now output all the available cookies for the current URL
driver.get_cookies()
3.查找元素
返回单个元素 | 返回列表 | 描述 |
---|---|---|
find_element_by_id | find_elements_by_id | 通过id查找元素 |
find_element_by_name | find_elements_by_name | |
find_element_by_xpath | find_elements_by_xpath | |
find_element_by_link_text | find_elements_by_link_text | |
find_element_by_partial_link_text | find_elements_by_partial_link_text | |
find_element_by_tag_name | find_elements_by_tag_name | |
find_element_by_class_name | find_elements_by_class_name | |
find_element_by_css_selector | find_elements_by_css_selector |
4.控制页面加载
4.1.设置判断加载条件
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
4.2.设置加载等待时间
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")
- 发送网页操作
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome("./chromedriver") # 打开谷歌浏览器
browser.get("https://www.xxx.com/") # 打开打开对应的网址
action = ActionChains(browser)
action.send_keys(Keys.PAGE_DOWN)
action.perform()
browser.close() # 关闭谷歌浏览器
参考文献:
http://selenium-python.readthedocs.io/getting-started.html
http://selenium-python-zh.readthedocs.io/en/latest/getting-started.html