基于Python的selenium学习(方法合集)

基于Python的selenium学习(方法合集),第1张

概述1、webDriver方法属性chrome浏览器fromseleniumimportwebdriver#Chrome浏览器驱动self.driver=webdriver.Chrome()#打开的网址self.driver.get('http://www.baidu.com')1.1)窗口最大化self.driver.maximize_window()1.2)关闭浏览器self.driver.quit()

1、webDriver方法属性
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、prompt
d框类型:
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的内容

9、Selenium等待条件 - ActionChains类
使用方法:

from selenium.webdriver import ActionChainsActionChains(driver).click(btn).perform()

常用方法:


selenium鼠标和键盘事件 - ActionChains类


10、selenium屏幕截图
方法:
(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学习(方法合集)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1189507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存