环境搭建
- 安装Python3.7.3
- 安装Firefox69.0.2以及浏览器驱动;安装Chrome77.0.3865.90以及浏览器驱动
- 安装selenium3.0
selenium API(一、基础操作)
# 导入webdriver
from selenium import webdriver
import time
# 创建一个浏览器对象
driver = webdriver.Chrome()
# 设置全屏
driver.maximize_window()
# 获取当前浏览器尺寸
# size = driver.get_window_size()
# print(size)
# 设置浏览器尺寸
driver.set_window_size(400, 400)
size = driver.get_window_size()
print(size)
# print(dir(driver))
# 获取浏览器位置
position = driver.get_window_position()
print(position)
# 设置浏览器位置
driver.set_window_position(100, 200)
# 访问百度
driver.get('https://www.hao123.com/')
# 显示当前的页面标题
print(driver.title)
# 显示当前的url
print(driver.current_url)
time.sleep(2)
# 访问hao123
driver.get('http://www.baidu.com')
# 显示当前的页面标题
print(driver.title)
# 显示当前的url
print(driver.current_url)
# 后退操作
driver.back()
# 显示当前的页面标题
print(driver.title)
# 显示当前的url
print(driver.current_url)
time.sleep(2)
# 前进
driver.forward()
# 显示当前的页面标题
print(driver.title)
# 显示当前的url
print(driver.current_url)
time.sleep(2)
# 截图
# 自动写文件
driver.get_screenshot_as_file('baidu.jpg')
# 自己写文件
data = driver.get_screenshot_as_png()
with open('baidu2.jpg', 'wb') as f:
f.write(data)
# 关闭浏览器
time.sleep(3)
driver.close()
driver.quit()
selenium API(二、元素的八种定位方式和基础操作)
# 导入webdriver
from selenium import webdriver
import time
# 创建一个浏览器对象
driver = webdriver.Chrome()
# 访问百度
driver.get('https://www.baidu.com/')
time.sleep(2)
# 定位到搜索框
# 1. id定位
el_input = driver.find_element_by_id('kw')
# 2. name定位
# el = driver.find_element_by_name('wd')
# 3. class定位
# el = driver.find_element_by_class_name('s_ipt')
# 4. css选择器定位
# el = driver.find_element_by_css_selector('#kw')
# 5. xpath定位
# el = driver.find_element_by_xpath('//*[@id="kw"]')
el_input.send_keys('58同城')
time.sleep(2)
# 定位到‘百度一下’按钮
el_click = driver.find_element_by_id('su')
el_click.click()
time.sleep(2)
el_58 = driver.find_element_by_xpath('//*[@id="1"]/h3/a[1]')
el_58.click()
time.sleep(2)
el_rent = driver.find_element_by_tag_name('pc_home_essc')
el_rent.click()
# 关闭浏览器
time.sleep(3)
driver.close()
driver.quit()
selenium API(三、高级操作)
selenium API(四、元素操作的定位和封装)
# 导入webdriver
from selenium import webdriver
import time
class Common(object):
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
def open_url(self, url):
self.driver.get(url)
self.driver.implicitly_wait(3)
def locateElement(self, locate_type, value):
el = None
if locate_type == 'id':
el = self.driver.find_element_by_id(value)
elif locate_type == 'name':
el = self.driver.find_element_by_name(value)
elif locate_type == 'class':
el = self.driver.find_element_by_class_name(value)
elif locate_type == 'tag':
el = self.driver.find_element_by_tag_name(value)
elif locate_type == 'text':
el = self.driver.find_element_by_link_text(value)
elif locate_type == 'partial':
el = self.driver.find_element_by_partial_link_text(value)
elif locate_type == 'xpath':
el = self.driver.find_element_by_xpath(value)
elif locate_type == 'css':
el = self.driver.find_element_by_css_selector(value)
return el
def click(self, locate_type, value):
el = self.locateElement(locate_type, value)
el.click()
def input_data(self, locate_type, value, data):
el = self.locateElement(locate_type, value)
el.send_keys(data)
def get_text(self, locate_type, value):
el = self.locateElement(locate_type, value)
return el.text
def get_attr(self, locate_type, value, data):
el = self.locateElement(locate_type, value)
el.get_attribute(data)
def close_driver(self):
self.driver.close()
def __del__(self):
self.driver.quit()
# 自身调用,即运行;被调用,不运行
if __name__ == '__main__':
com = Common()
com.open_url('http://www.baidu.com')
com.input_data('id', 'kw', 'selenium')
com.click('id', 'su')
time.sleep(3)