selemiun模块介绍

it2026-08-18  4

目录

 

简介

安装 selenium+chromedriver

selenium的调用

selemium的使用

搜索

窗口切换

设置代理

隐式等待与显示等待

元素的拖动

填充表单

webdriver补充


简介

selenium最初是一个测试工具,而在爬虫中主要是为了解决requests无法直接执行JavaScript代码的问题

selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如:跳转,点击,切换页面等。

安装 selenium+chromedriver

安装selenium:pip3 install selenium

chromedriver: 下载地址

一定要安装与浏览器版本相对应的chromedriver版本

selenium的调用

from selenium import webdriver # executable_path 是chrmedriver安装的路径 driver = webdriver.Chrome(executable_path = "C:\\doftware\chromedriver.exe")

selemium的使用

搜索

selenium提供了8种搜索方式

搜索第一个元素搜索某种指定条件下的所有元素含义find_element_by_idfind_elements_by_id通过元素id定位find_element_by_namefind_elements_by_name通过元素name定位find_element_by_class_namefind_elements_by_class_name通过元素class_name定位find_element_by_xpathfind_elements_by_xpath通过元素xpath表达式定位find_element_by_css_selectorfind_elements_by_css_selector通过元素xss选择器定位find_element_by_tag_namefind_element_by_tag_name通过元素tag定位find_element_by_link_textfind_elements_by_link_text通过元素完整超链接定位find_element_by_partial_link_textfind_elements_by_partial_link_text通过元素部分超链接定位

窗口切换

在使用selenium操控浏览器时,肯定涉及到窗口切换。这里我们通过JS来完成这个操作。

from selenium import webdriver driver = webdriver.Chrome(executable_path="C:\\software\chromedriver.exe") #调用浏览器打开百度 driver.get("https://www.baidu.com") #调用JS打开另一个窗口,但是没有切换过去 driver.execute_script("window.open('https://www.taobao.com')") #切换到新打开的窗口 driver.switch_to.window(driver.window_handles[1]) #切换到原来的窗口 driver.switch_to.window(driver.window_handles[0])

设置代理

from selenium import webdriver options = webdriver.ChromeOptions() #配置浏览器选项:添加代理 options.add_argument("--proxy-server= http://127.0.0.1:8080") driver = webdriver.Chrome(chrome_options = options,executable_path = "C:\\software\chromedriver.exe") driver.get("http://httpdin.org/ip")

隐式等待与显示等待

from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support imoport expected_conditions as EC from selenium.webdriver.commom.by import By #隐式等待10秒 driver.implicitly_wait(10) #显示等待1000秒,直到含有"长沙"的文本在元素中出现 WebDriverWait(driver,1000)( EC.text_to_present_in_element_value((By.ID,"fromStationText"),"长沙") )

元素的拖动

在selenium当中除了简单的点击动作之外,还可以完成一些稍微复杂的动作。为了实现元素拖拽的目的,我们导入了ActionChains模块

函数含义click(on_element = None)单击鼠标左键content_click(on_element = None)点击鼠标右键click_and_hold(on_element = None)点击鼠标左键,按住不放double_click(on_element = None)双击鼠标左键drag_and_drop(source,target)拖拽到某个元素然后松开drag_and_drop_by_offset(source,xoffsert,yoffset)拖拽到某个坐标然后松开move_to_element(to_element)鼠标移动到某个元素move_to_offset(xoffser,yoffset)鼠标移动到距离当前位置(x,y)release(on_element = None)在某个元素位置松开鼠标perform()执行链中所有操作

实例:

#导入ActionChains模块 from selenium.webdriver.common.action_chains import ActionChaions driver = webdriver.Chrome(executable_path = "C:\\chromedriver.exe") driver.get("https://www/.baidu.com") user = driver.find_element_to_id("username") #鼠标移动到id = “user”元素的位置 ActionChains(driver).move_to_element(user).perform()

填充表单

当我们碰到<select></select>标签的下拉框。Webdriver提供了一个叫Select的方法

<select id="status" class="form-control valid" onchange="" name = 'status'> <option value=""></option> <option value="0">草莓</option> <option value="1">菠萝</option> <option value="2">葡萄</option> <option value="3">西瓜</option> </select> from selenium.webdriver.support.ui import Select driver = Webdriver.Chrome() #找到name选项卡 select = Select(driver.find_element_by_name('status')) #以下是三种选择下拉框的方式,他可以根据索引/值/文字来选择。 select.select_by_index(1) select.select_by_value("0") select.select_by_visible_text("草莓") #index索引从0开始 #value是option标签的一个属性值,并不是显示在下拉框中的值 #visible_text实在option标签文本的值,是显示在下拉框的值

webdriver补充

方法说明send_keys(value)模拟按键输入get_attribute(name)获取元素属性值submit()用于提交表单text获取元素的文本

 

最新回复(0)