Selenium
一、什么是selenium
1.selenium是一个用于web应用程序测试的工具
2.selenium测试直接运行在浏览器中,就像真正的用户在操作一样
二、 为什么使用selenium
模拟浏览器功能,自动执行网页中的js代码,实现动态加载
三、安装selenium
1.在下列网站中下载与你chrome浏览器对应的驱动
chromedriver.storage.googleapis.com/index.html
2.下载好后解压到桌面有个chromedriver.exe文件辅助到pycham中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dyY3fp5R-1675093125467)(C:\Users\asonare\AppData\Roaming\Typora\typora-user-images\image-20230114180718710.png)]
3.pip install selenium
四、使用selenium
1.基本使用
from selenium import webdriver
path = 'chromedrive.exe'
brower = webdriver.Chrome(path)
url = 'https://www.baidu.com'
brower.get(url)
# 直接打开浏览器
2.selenium元素定位
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)
url = 'https://www.baidu.com'
browser.get(url)
# 通过id来找到对象
button1 = browser.find_element(by='id',value='su')
# 通过标签属性的属性值来获取对象
button2 = browser.find_element(by='name',value='wd')
# 通过xpath语句来获取对象
button3 = browser.find_element(by='xpath',value='//input[@id="su"]')
# 通过标签的名字来获取对象
button4 = browser.find_elements(by='tag name',value='input')
# link text 用来定位连接标签
button5 = browser.find_elements(by='link text',value='视频')
3.selenium获取元素信息
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)
url = 'http://www.baidu.com'
browser.get(url)
input = browser.find_element(by='id', value='su')
print(input.get_attribute('class')) # 获取标签的属性
print(input.tag_name) # 获取标签的名字
print(input.text) # 获取元素文本
4.selenium交互
path = 'chromedrive.exe'
browser = webdriver.Chrome(path)
url = 'http://www.baidu.com'
browser.get(url)
input = browser.find_element(by='id', value='kw')
# 在文本框输入周杰伦
input.send_keys('周杰伦')
time.sleep(2)
# 获取百度一下按钮
button = browser.find_element(by='id', value='su')
button.click()
time.sleep(2)
# 滑倒底部
js_button ='document.documentElement.scrollTop=100000'
browser.execute_script(js_button)
time.sleep(2)
# 获取下一页的按钮
next = browser.find_element(by='xpath', value='//a[@class="n"]')
next.click()
time.sleep(2)
# 回到上一页
browser.back()
time.sleep(2)
# 回去
browser.forward()
time.sleep(2)
# 退出
browser.quit()
五、Chrome handless
因为selenium会打开界面,界面里有大量的js等文件会影响速度。chrome handless是一个无界面的浏览器,所以性能更高。
Chrome handless的引用固定的,只有path需要自己的路径。其他所有使用方法和selenium一样
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def share_browser():
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# path是你自己的chrome浏览器的文件路径
path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
chrome_options.binary_location = path
browser = webdriver.Chrome(chrome_options=chrome_options)
return browser
browser = share_browser()
url = 'http://www.baidu.com'
browser.get(url)
rome_options)
return browser
browser = share_browser()
url = ‘http://www.baidu.com’
browser.get(url)