Chrome浏览器
from selenium import webdriver# Chrome浏览器驱动self.driver = webdriver.Chrome()# 打开的网址self.driver.get('http://www.baIDu.com')
1.1)窗口最大化
self.driver.maximize_window()
1.2)关闭浏览器
self.driver.quit()
1.3)关闭当前tab页
self.driver.close()
1.4)刷新
self.driver.refresh()
1.5)后退
self.driver.back()
1.6)前进
self.driver.forward()
1.7)获取当前网页标题
self.driver.Title
1.8)获取当前浏览器名称
self.driver.name
1.9)获取当前网页地址url
self.driver.current_url
1.10)获取窗口句柄
self.driver.window_handles # 所有句柄self.driver.current_window_handle # 当前窗口句柄
1.11)切换窗口
self.driver.switch_to.window(w)
1.12)切换到alert
self.driver.switch_to.alert
1.13)切换到frame
self.driver.switch_to.frame(f)
1.14)切换到活动元素
self.driver.switch_to.active_element
2、元素定位2.1)通过ID定位元素
self.driver.find_element_by_ID('kw').send_keys('selenium')self.driver.find_element_by_ID('su').click()
2.2)通过标签名称定位元素
# find_element_by_name()可能返回多个元素,查找的时候返回第1个# find_elements_by_name()返回一个集合self.driver.find_element_by_name('wd').send_keys('selenium')
2.3)通过链接文本定位元素
self.driver.find_element_by_link_text('百度首页').click()
2.4)通过部分链接文本定位
self.driver.find_element_by_partial_link_text('首页').click()
2.5)通过xpath定位
# 熟悉xpath语法self.driver.find_element_by_xpath('//*[@ID="kw"]').send_keys('selenium')
2.6)通过标签名称定位
input = self.driver.find_element_by_tag_name('input')[0] # tag太多了print(input)
2.7)通过css选择器定位
# copy -> CSS selectorself.driver.find_element_by_CSS_selector('#kw').send_keys('百度文库')
2.8)通过CSS class定位
self.driver.find_element_by_class_name('s_ipt').send_keys('selenium')
补充:也可直接用find_element()方法
from selenium.webdriver.common.by import Byself.driver.find_element(By.ID, value='kw').send_keys('selenium')
3、WebElement常用属性driver = webdriver.Chrome()driver.get('http://www.baIDu.com')driver.maximize_window()ele = driver.find_element_by_ID('kw')
3.1)标示
print(ele.ID) # b9012f3c-c184-41b1-879a-a2f78304e3c9
3.2)宽高
print(ele.size) # {'height': 44, 'wIDth': 548}
3.3)宽高和坐标
print(ele.rect) # {'height': 44, 'wIDth': 548, 'x': 441, 'y': 188.40000915527344}
3.4)标签名称
print(ele.tag_name) # input
3.5)文本内容
print(ele.text)
4、WebElement的方法driver = webdriver.Chrome()driver.get('http://www.baIDu.com')driver.maximize_window()ele = driver.find_element_by_ID('kw')
4.1)单击
ele.click()
4.2)输入内容
ele.send_keys('selenium')
4.3)获取属性值
print(ele.get_attribute('type')) # type/name/value text
4.4)是否被选中
print(ele.is_selected()) # False
4.5)是否可用
print(ele.is_enabled()) # True
4.6)是否显示
print(ele.is_displayed()) # True
4.7)清空内容
ele.clear()
4.8)CSS属性值
print(ele.value_of_CSS_property('value'))
5、Select常用方法from selenium.webdriver.support.select import Selectselectbutton = self.driver.find_element_by_ID('provise')selectElement = Select(selectbutton)
5.1)根据索引选择(deselect_by_index:反选)
selectElement.select_by_index(4)
5.2)根据值选择(deselect_by_value:反选)
selectElement.select_by_value('hangzhou')
5.3)根据文本选择(deselect_by_visible_text:反选)
selectElement.select_by_visible_text('杭州')
5.4)获取所有选项
for option in selectElement.options: print(option.text)
5.5)所有选中选项(deselect_all:反选)
selectElement.all_selected_options()
5.6)第一个选择项
selectElement.first_selected_option()
6、d框的处理:alert、confirm、promptd框类型:
alert:提示
confirm:用于确认
prompt:输入内容
方法/属性:
6.1)accept():接受
alert = self.driver.switch_to.alertprint(alert.text)alert.accept()
6.2)dismiss():取消
text:显示的文本
confirm = self.driver.switch_to.alertprint(confirm.text)confirm.dismiss()
6.3)send_keys(“keys”):输入内容
prompt= self.driver.switch_to.alertprompt.send_keys("20")prompt.accept()
7、frame、iframe定位frame标签种类:
frameset(和普通标签一样)/frame/iframe:
使用方法:
switch_to.frame(reference):切换frame,reference是传入的参数(ID、name、index等)
switch_to.default_content():返回主文档
switch_to.parent_frame():返回父文档
top = driver.find_element_by_name('top') driver.switch_to.frame(top) driver.find_element_by_xpath('XPATH')
8、webdriverwait-显示等待8.1) 模块引入
from selenium.webdriver.support.wait import webdriverwait
8.2)webdriverwait参数介绍:
driver:传入WebDriver实例
timeout:超时时间,等待的最长时间
poll_frequency:调用until或until_not中的方法的间隔时间,默认0.5秒
ignored_exceptions:忽略的异常
8.3)webdriverwait方法介绍:
until(method, message)、until_not(method, message)
method:在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是False
message:如果超时,抛出TimeoutException,将message传入异常
from selenium.webdriver.support.wait import webdriverwaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium import webdriverif __name__ == '__main__': driver = webdriver.Chrome() driver.get('http://www.baIDu.com') driver.maximize_window() driver.find_element_by_ID('kw').send_keys('selenium') driver.find_element_by_ID('su').click() webdriverwait(driver, 2).until(EC.Title_is('selenium_百度搜索'))
补充:expected_conditions模块:用于判断网页上的元素是否存在等,一般与webdriverwait配合使用
模块引入:
from selenium.webdriver.support import expected_conditions as EC
方法介绍:
(1) Title_is(‘str’):判断当前页面的Title是否等于str
(2) EC.Title_contains(‘str’):判断当前页面的Title是否包含str
(3) EC.url_contains(‘url’):判断当前页面的url是否包含url
(4) EC.url_matches(‘Expression’):判断当前页面的url是否满足字符串正则表达式匹配
(5) EC.presence_of_element_located((By.ID, ‘ID’)):判断元素是否出现,只要有一个元素出现,返回元素对象
(6) EC.visibility_of(driver.find_element(By.ID, ‘ID’)):判断元素是否可见,返回元素对象
(7) EC.text_to_be_present_in_element((By.name, ‘name’), ‘text’):判断元素是否包含指定文本,返回布尔值
(8) EC.frame_to_be_available_and_switch_to_it(By.xpath, ‘path’):判断该frame是否可以切换,可以则,返回True并且切换
(9) EC.element_to_be_clickable((By.name, ‘name’)):判断某个元素是否可见且可点击,是返回该元素,否则返回False
(10) EC.element_to_be_selected(driver.find_element(By.xpath, ‘path’)):判断某个元素是否被选中,一般用在下拉列表
(11) EC.alert_is_present():判断页面上是否存在alert,如果有就切换到alert并返回alert的内容
使用方法:
from selenium.webdriver import ActionChainsActionChains(driver).click(btn).perform()
常用方法:
方法:
(1)save_screenshot(filename):获取当前屏幕截图并保存为指定文件,filename为文件名(包含文件路径)
(2)get_screenshot_as_base64():获取当前屏幕截图base64编码字符串
(3)get_screenshot_as_file(filename)获取当前的屏幕截图,使用完整路径
(4)get_screenshot_as_png():获取当前屏幕截图的二进制文件数据
import timefilePath = 'D:\Python\01Demo\venv\phone'filename = time.strftime('%Y%m%d%H%m%s', time.localtime())+'.png'print(filePath + '\' + filename)self.driver.save_screenshot(filePath + '\' + filename)
11、pyautogui:图形用户界面自动化工具import pyautogui# 确定鼠标当前位置pyautogui.positon()# 移动pyautogui.moveto(x,y)# 点击pyautogui.mouseDown()pyautogui.mouseUp()pyautogui.click()pyautogui.doubleClick()pyautogui.mIDdleClick()pyautogui.rightClick()# 拖动pyautogui.dragTo(x,y)# 控制键盘pyautogui.typewrite(s)
总结 以上是内存溢出为你收集整理的基于Python的selenium学习(方法合集)全部内容,希望文章能够帮你解决基于Python的selenium学习(方法合集)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)