一、安装导入
使用包管理器安装
pip3 install selenium
二、WebDriver工具
要使用这个工具我们需要保证安装了一个浏览器的驱动器。
Python的WebDriver是一个用于自动化Web浏览器操作的工具,它属于Selenium的一部分,特别是Selenium 2.0及以后版本中,WebDriver已经成为了Selenium的主要组件。WebDriver为Web自动化提供了一个简单的接口,允许开发人员和测试人员编写脚本来模拟用户在浏览器中的操作,如点击、输入文本、获取页面数据等。
WebDriver的主要特点包括:
-
跨浏览器支持:WebDriver支持多种主流浏览器,如Chrome、Firefox、Edge、Safari和Internet Explorer等,这意味着可以使用相同的API在不同的浏览器上执行自动化测试。
-
跨平台支持:WebDriver可以在不同的操作系统上运行,包括Windows、macOS和Linux等,这为用户提供了更大的灵活性和兼容性。
-
强大的元素定位:WebDriver提供了多种元素定位方法,如通过ID、名称、XPath、CSS选择器、链接文本等,可以灵活地定位页面上的元素。
-
丰富的API:WebDriver提供了丰富的API,包括页面导航、元素操作、窗口操作、等待机制等,可以方便地进行Web自动化操作。
-
易于集成:WebDriver可以轻松地与Python等编程语言集成,通过编写脚本来模拟用户的浏览器操作,从而实现自动化测试、数据爬取等任务。
Python的WebDriver提供了丰富的方法来与Web浏览器进行交互,以下是一些常用的WebDriver方法:
元素定位方法:
注意:从Selenium 4开始,推荐使用find_element(By.ID, "id")
等新的定位方式,其中By
是一个枚举类,提供了多种定位策略。
find_element_by_id(id_)
:通过元素的ID定位。
find_element_by_name(name)
:通过元素的name属性定位。
find_element_by_xpath(xpath)
:通过XPath表达式定位。
find_element_by_link_text(link_text)
:通过链接文本定位。
find_element_by_partial_link_text(partial_link_text)
:通过部分链接文本定位。
find_element_by_tag_name(tag_name)
:通过标签名定位。
find_element_by_class_name(class_name)
:通过类名定位。
find_element_by_css_selector(css_selector)
:通过CSS选择器定位。
元素操作方法:
clear()
:清除文本字段的内容。
send_keys(*value)
:模拟按键输入,可以发送一个或多个字符串到当前焦点的元素。
click()
:单击元素。
submit()
:提交表单。如果元素是一个表单(或表单内的元素),则提交该表单。
页面操作方法:
get(url)
:加载新的网页。
refresh()
:刷新当前页面。
back()
:后退到上一个访问的页面。
forward()
:前进到下一个访问的页面。
quit()
:关闭所有浏览器窗口,并结束WebDriver会话。
close()
:关闭当前窗口。
元素属性与状态:
size
:返回元素的尺寸,通常是一个包含宽度和高度的字典。
text
:获取元素的文本内容。
get_attribute(name)
:获取元素的属性值,如id
、name
、class
等。
is_displayed()
:检查元素是否对用户可见,返回True
或False
。
其他方法:
page_source
:获取当前页面的源代码。
title
:获取当前页面的标题。
current_url
:获取当前页面的URL。
execute_script(script, *args)
:在浏览器中执行JavaScript代码。
等待机制:
隐式等待(Implicit Wait):通过implicitly_wait(time_to_wait)
设置,在查找元素时,如果元素没有立即出现,则等待指定的时间。
显式等待(Explicit Wait):使用WebDriverWait
结合expected_conditions
来等待某个条件成立,如元素可见、可点击等。
三、案例
from selenium import webdriver#可以操纵浏览器驱动器
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
#加载驱动工具
test_webdriver = webdriver.Chrome(service=Service(r"D:\chromedriver-win64\chromedriver-win64\chromedriver.exe"))
#以get方式发起请求
test_webdriver.get('https://www.网址.com')
#获取当前浏览器的标头
print(test_webdriver.title)
#获取页面元素信息
for item in test_webdriver.find_elements(by=By.XPATH,value="//span[@class='info-wrapper-title-text']"):
print(item.text)
time.sleep(10)
#浏览器退出
test_webdriver.quit()