selemium 的安装
selemium 简单示例
from selenium import webdriver
#以下三种浏览器的作用是相同的
driver = webdriver.PhantomJS() #无头浏览器,即没有界面的浏览器,
driver = webdriver.Firefox() #火狐浏览器
driver = webdriver.Chrome() #谷歌浏览器
#driver.get 方法将打开URL中填写的地址,注意,该操作自动打开火狐和谷歌浏览器界面
driver.get('https://www.xxx.com')
print("网页的内容:",driver.page_source) #打印网页的内容
driver.close() #该语句只会关闭一个标签页
或者
driver.quit() #该语句关闭整个浏览器
与页面交互
<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.send_keys("你好") #在该文本框中输入“你好”
element.clear() #当输入一些文本时,这些输入框中可能原有的文本不会被自动清除掉,相反,你的输入会继续添加到已存在文本之后,可以通过该语句去清除input或者textarea元素中的内容
element.click() #该语句是相当于鼠标的点击操作
在不同的窗口和框架之间移动
在不同的窗口之间移动
for handle in driver.window_handles:
driver.switch_to_window(handle)
操作Cookies
获取当前 URL 下的Cookies值
driver.get_cookies()**设置Cookies**
cookie = {‘name’ : ‘foo’, ‘value’ : ‘bar’} driver.add_cookie(cookie)
等待页面加载完成
假设该 www.xxx.com页面的内容如下:
<input type="text" name="passwd" id="passwd-id" />
显式等待
第一种方式:等待一个确切的时间段,无论页面是否加载完成,都必须执行下一个操作
time.sleep(3)
第二种方式:只等待需要的时间。WebDriverWait结合ExpectedCondition 是实现的一种方式
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://www.xxx.com")
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "passwd-id"))
隐式等待
如果某些元素不是立即可用的,隐式等待是告诉WebDriver去等待一定的时间后去查找元素。 默认等待时间是0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://www.xxx.com")
myDynamicElement = driver.find_element_by_id("passwd-id")