selenium重定项
selenium
一种自动化测试工具,可以模拟人来操作浏览器,执行效率有时候还不如人快,因为需要浏览器页面加载完成才能操作,对网速要求严格,可以用于重复性的操作。
准备工作
按照对应平台下载对应版本谷歌浏览器驱动
linux
下载好linux版本对应驱动后
Ubuntu安装 chromedriver:
将下载的文件移动到软件应该呆的目录去:
sudo mv chromedriver /usr/local/bin/chromedriver
改变用户执行的权限:
sudo chmod 777 /usr/local/bin/chromedriver
检验是否正常使用:
chromedriver --version
windows
放在任意环境变量目录下就行,一般放python解释器目录下
G:\python35\Scripts
python3 安装selenium
pip install selenium
开始写代码
这里分成两种情况
新网址,本页刷新
注意点:
这一句会切换到新url对象,如果不写这句,浏览器对象会去原来url页面中,找元素操作,这时候我们希望操作的元素找不到就会报错。
sreach_window=driver.current_window_handle
第二点注意点是在跳转到新页面以后要等页面加载完毕才能操作不然也会报错,所以在对新页面进行操作之前往往需要延时几秒等待页面加载完毕,具体延时事件和页面加载速度有关系。
time.sleep(10)
# 此代码是来使用百度搜索引擎,搜索“58同城”,并本页刷新进入58同城页面
import time from selenium import webdriver # driver = webdriver.Chrome() # 请求百度 链接 url = 'http://www.baidu.com' # 执行操作,打开浏览器输入url driver.get(url) # 定位页面表单 ele_kw = driver.find_element_by_id('kw') # 向表单中填入数据 ele_kw.send_keys('58同城') # 定位页面搜索按钮 ele_su = driver.find_element_by_id('su') # 延时几秒确保页面加载完毕 time.sleep(1) sreach_window=driver.current_window_handle # 点击“百度一下”按钮 ele_su.click() # 延时几秒确保页面加载完毕 time.sleep(3) # 找到“58同城”官网的xpath,点击该标签进入 tongcheng = driver.find_element_by_xpath('//*[@id="1"]/h3/a[1]').click() # 页面全加载完毕后会关闭浏览器 driver.close()
新网址,新标签页刷新
注意点
将处理对象变为新标签页面,否则浏览器操作对象会找不到要操作页面中的元素
driver.switch_to.window(driver.window_handles[-1])
# 此代码直接进入58同城主站,然后代开租房信息,会出现一个新标签页,之后会将处理者切换到新标签页
import time from selenium import webdriver # driver = webdriver.Chrome() # 请求百度 链接 url = 'http://www.baidu.com' # 执行操作,打开浏览器输入url driver.get(url) # 延时很多秒确保页面加载完毕,58同城网站实在是内容太多,多等等 time.sleep(20) # 将页面切换到新出现标签 driver.switch_to.window(driver.window_handles[-1]) sreach_window3=driver.current_window_handle tongcheng2 = driver.find_element_by_xpath('/html/body/div[3]/div[1]/div[1]/div/div[1]/div[1]/span[1]/a').click() # 页面全加载完毕后会关闭浏览器 driver.close()