selenium模块

Selenium安装非常简单,直接pip就可以搞定: pip install selenium

使用selenium驱动chrome浏览器需要下载chromedriver,而且chromedriver版本需要与chrome的版本对应,版本错误的话则会运行报错。 Chromedriver下载地址:https://chromedriver.storage.googleapis.com/index.html

Windows: 下载对应版本的chromedriver解压后,将文件移动到一个配置了环境变量的文件夹中,例如Python安装文件夹

Linux/Mac: 解压后,将文件移动至/usr/local/bin目录中

Selenium驱动其他浏览器的也是需要下载对应的驱动

 

 

元素选取

通过方法定位页面的元素

通过driver.page_source 获取源代码

click()单击

from selenium import webdriver
import time


#实例driver对象
driver = webdriver.Chrome()

# 打开百度浏览器
driver.get("https://www.baidu.com")

# 在输入框 输入需要搜索的内容
driver.find_element_by_xpath("//input[@id='kw']").send_keys('python是什么')

#点击[百度一下]搜索
driver.find_element_by_xpath("//input[@id='su']").click()

time.sleep(10) #等待10秒
driver.close() #关闭浏览器

虚拟机启动:
进入到项目文件 运行:python+文件名

time.sleep() 使用起来不方便,不知道何时js加载出来



显示等待: 显式等待指定某个条件,然后设置最长等待时间,程序每隔XX时间看一眼,如果条件成立,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出超时异常(TimeoutException)。 显示等待主要使用了WebDriverWait类与expected_conditions模块。

一般写法:

WebDriverWait(driver, timeout, poll_frequency, igonred_exceptions).until(method, message)

Driver:传入WebDriver实例。 timeout: 超时时间,等待的最长时间(同时要考虑隐性等待时间)

poll_frequency: 调用until中的方法的间隔时间,默认是0.5秒 ignored_exceptions: 忽略的异常,如果在调用until的过程中抛出这个元组中的异常,则不中断代码,继续等待. Method:可执行方法 Message: 超时时返回的信息

 

WebDriverWait包:from selenium.webdriver.support.wait import WebDriverWait

expected_conditions包:from selenium.webdriver.support import expected_conditions as EC

 

隐性等待对整个driver的周期都起作用,所以只要设置一次即可

隐性等待和显性等待可以同时用,但要注意:等待的最长时间取两者之中的大者

默认等待时间为0,可以通过下面的方式设置:

from selenium import webdriver

driver = webdriver.Chrome()

driver.implicitly_wait(10) #隐式等待,最长10s

driver.get('https://www.baidu.com')

 

 

 

动作链

 

 






 

posted on 2019-04-02 15:52  python兵者  阅读(41)  评论(0)    收藏  举报