安装python
- 官网直接下载当前最新版的python
- Python官网地址:https://www.python.org/
- 百度搜索Python3.6安装步骤
- Python安装步骤:自行百度,暂不提供
安装selenium
- 安装好Python3之后,默认就会有pip,使用pip进行安装:
pip install selenium
安装Firefox geckodriver
- 下载最新版geckodriver
- 解压下载的驱动(该软件无需安装,解压缩即可)
- 比如解压缩到路径: D:/browser_drivers/
- 添加geckodriver环境变量
- 将解压缩后的geckodriver路径添加的Windows环境变量中
- 添加Firefox环境变量
- 添加Firefox的可执行程序路径到环境变量中
Selenium简要教程
- 环境搭建验证
# 打开CMD窗口,输入以下验证浏览器是否正常打开 python from selenium import webdriver driver=webdriver.Firefox() driver.get("https://www.baidu.com")
- 贴出一段简要的代码,仅供参考,这段代码做了以下几件事:
- 打开Firefox浏览器
- 打开baidu页面
- 输入搜索内容
- 点击搜索
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import NoAlertPresentException import unittest, time, re class Test8(unittest.TestCase): def setUp(self): #打开火狐浏览器 self.driver = webdriver.Firefox() #设置超时时间为30s self.driver.implicitly_wait(30) #设置URL self.base_url = "https://www.baidu.com/" self.verificationErrors = [] self.accept_next_alert = True def test_8(self): driver = self.driver #打开URL driver.get(self.base_url + "/") #延时 time.sleep(4) #清空文本框 driver.find_element_by_id("kw").clear() #输入搜索内容 driver.find_element_by_id("kw").send_keys("12306") time.sleep(4) #点击搜索 driver.find_element_by_id("su").click() time.sleep(4) def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException as e: return False return True def is_alert_present(self): try: self.driver.switch_to_alert() except NoAlertPresentException as e: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() alert_text = alert.text if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert_text finally: self.accept_next_alert = True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main()