python+selenium 基础API总结(一)

"1.访问不同的浏览器+退出浏览器"
from selenium import webdriver
import time

driver=webdriver.Chrome(executable_path="d:\\chromedriver.exe")  # 本地浏览器驱动所在的位置
driver=webdriver.Firefox(executable_path="d:\\geckodriver.exe")
driver=webdriver.Ie(executable_path="d:\\IEDriverServer.exe")
driver.quit()     # 退出浏览器


"2.访问某个网址"
url="https://www.baidu.com"
driver.get(url)


"3.浏览器的前进和后退操作"
url="https://www.sogou.com"
driver.get(url)

driver.back()     # 后退
driver.forward()  # 前进


"4.刷新当前页面,刷新后需要重新定位元素"
driver.find_element_by_id("query").send_keys("自动化测试")  # 刷新前输入内容
time.sleep(2)
driver.refresh()  # 刷新后输入的内容不见了


"5.最大化窗口"
driver.maximize_window()


"6.获取浏览器坐标位置"
position=driver.get_window_position()
print (position)
# {'x': 9, 'y': 9} 字典类型,可使用字典的方法取x/y的值


"7.设定浏览器坐标位置"
driver.set_window_position(x=50,y=50)
print (driver.get_window_position())
# 浏览器坐标位置x-->最左边为0,左右移动;y-->最顶部,上下移动
# 当浏览器最大化窗口时失效


"8.获取浏览器的窗体大小"
size=driver.get_window_size()
print (size)  # {'width': 1053, 'height': 807} ,字典类型,可使用字典的方法取width/height的值
print (size["width"])   # 获取浏览器的宽度
print (size["height"])  # 获取浏览器的高度


"9.获取浏览器的属性"
print (driver.capabilities)  # 字典类型


"10.获取浏览器的title属性值"
print (driver.title)


"11.获取页面源码"
print (driver.page_source)
# 返回的是字符串类型
assert "搜狗" in driver.page_source  # 断言指定字段是否在页面源码中


"12.获取浏览器的名字"
print (driver.name)


"13.获取当前页面的url地址"
print (driver.current_url)


"14.获取当前窗口句柄"
driver.get("https://www.baidu.com")
print (driver.current_window_handle)   # 返回字符串类型
driver.find_element_by_id("kw").send_keys("w3cschool")  # 在文本框中输入指定内容
driver.find_element_by_id("su").click()   # 点击按钮操作
time.sleep(2)  # 强制等待
driver.find_element_by_xpath('//div[@id="1"]//h3//a[@target="_blank"]').click()
time.sleep(2)


"15.获取所有的窗口句柄"
print (driver.window_handles)  # 返回列表类型
for handle in driver.window_handles:
    driver.switch_to.window(handle)   # 切换窗口
    time.sleep(2)
    driver.close()  # 关闭当前的窗口


"16.获取页面元素的基本信息"
element=driver.find_element_by_xpath('//a[text()="新闻"]')
# print (dir(element))
print (element.text)  # 元素的文本值
print (element.size)  # 元素的大小
print (element.tag_name)  # 元素的标签名


"17.判断页面元素是否可见"
driver.get("https://www.baidu.com")
element=driver.find_element_by_xpath('//a[text()="新闻"]')
print (element.is_displayed())  # 返回布尔值
# driver.execute_script("document.getElementById('query').disabled=false;")  # 修改元素的可用状态js


"18.判断页面元素是否可操作"
driver.get("https://www.baidu.com")
element=driver.find_element_by_xpath('//a[text()="新闻"]')
print (element.is_enabled())   # 返回布尔值
element1=driver.find_element_by_xpath('//b[.="百度"]')
print (element1.is_enabled())


"19.获取页面元素的属性"
driver.get("https://www.baidu.com")
element=driver.find_element_by_xpath('//a[text()="新闻"]')
print (element.get_attribute("name"))
print (element.get_attribute("class"))


"20.获取元素标签的内容"
driver.get("https://www.baidu.com")
element=driver.find_element_by_xpath('//div[@class="s_form"]')
print (element.get_property("textContent"))    # 获取文本内容
print (element.get_property("innerHTML"))      # 获取元素内的全部HTML
print (element.get_property("outerHTML"))      # 获取包含选中元素的HTML


"20.获取元素的css属性值,不推荐使用"
driver.get("https://www.baidu.com")
element=driver.find_element_by_id("kw")
print (element.value_of_css_property("height"))
print (element.value_of_css_property("font-size"))
font=element.value_of_css_property("font-family")
assert font=="arial","测试失败"  # 可断言元素的css属性是否达到了预期的效果


"21.清空输入框中的内容,输入内容,单击操作"
url="https://www.sogou.com"
driver.get(url)
element=driver.find_element_by_id("query")
element.send_keys("自动化测试")   # 在输入框中输入内容
time.sleep(2)
element.clear()  # 清空内容
element.send_keys("python")
button=driver.find_element_by_id("stb")
button.click()   # 单击操作


"22.双击操作"
# 访问本地测试网页
url = "http://127.0.0.1/test_doubleclick.html"
driver.get(url)
inputBox=driver.find_element_by_id("inputBox")
# 导入支持双击操作的模块
from selenium.webdriver import ActionChains
# 模拟鼠标双击操作
action_chains=ActionChains(driver)  #生成实例
action_chains.double_click(inputBox).perform()


"23.操作单选下拉列表"
# 访问本地测试网页
url = "http://127.0.0.1/test_select.html"
driver.get(url)
# 导入Select模块
from selenium.webdriver.support.ui import  Select
selectElement = Select(driver.find_element_by_name("fruit"))
print (selectElement.first_selected_option.text)  # 打印默认选中项的文本
print (selectElement.options)      # 获取所有选择项的页面元素对象
options=selectElement.options
print (options[0].is_selected())   # 判断元素是否被选中,返回布尔值
print (list(map(lambda x:x.text,options)))   # 打印所有选择项的文本,返回列表类型

# 方法一:通过序号选择第二个元素,序号从0开始
selectElement.select_by_index(1)
print (selectElement.all_selected_options[0].text)  # 打印当前选中的选项文本
# 方法二:通过选项的显示文本选择
selectElement.select_by_visible_text("山楂")
print (selectElement.all_selected_options[0].text)  # 打印当前选中的选项文本
# 方法三:通过选项的value属性值选择
selectElement.select_by_value("lizhi")
print (selectElement.all_selected_options[0].text)  # 打印当前选中的选项文本


"24.操作多选下拉列表"
# 访问本地测试网页
url = "http://127.0.0.1/test_multiple_select.html"
driver.get(url)
from selenium.webdriver.support.ui import Select
selectElement = Select(driver.find_element_by_xpath("//select"))
selectElement.select_by_index(1)
selectElement.select_by_visible_text("山楂")
selectElement.select_by_value("lizhi")
time.sleep(2)

# 通过序号取消已选中的序号为1的选项
selectElement.deselect_by_index(1)
# 通过选项文本取消已选中的文本为“山楂”选项
selectElement.deselect_by_visible_text("山楂")
# 通过选项属性值取消已选中的value=“lizhi”的选项
selectElement.deselect_by_value("lizhi")
# 取消所有已选中项
selectElement.deselect_all()


"25.操作可以输入的下拉框Keys.ARROW_DOWN,+其余键盘事件"
url ="https://www.sogou.com/"
driver.get(url)
driver.find_element_by_id("query").send_keys("自动")
# 导入Keys类(键盘操作)
from selenium.webdriver.common.keys import Keys
# 删除多输入的一个 动
driver.find_element_by_id("query").send_keys(Keys.BACK_SPACE)
time.sleep(3)
# 输入空格键+“动化”
driver.find_element_by_id("query").send_keys(Keys.SPACE)
driver.find_element_by_id("query").send_keys("动化")
time.sleep(3)
# ctrl+a 全选输入框内容
driver.find_element_by_id("query").send_keys(Keys.CONTROL, 'a')
time.sleep(3)
# ctrl+x 剪切输入框内容
driver.find_element_by_id("query").send_keys(Keys.CONTROL, 'x')
time.sleep(3)
# ctrl+v 粘贴内容到输入框
driver.find_element_by_id("query").send_keys(Keys.CONTROL, 'v')
time.sleep(3)
# 点击键盘向下箭头
driver.find_element_by_id("query").send_keys(Keys.ARROW_DOWN)
time.sleep(3)
driver.find_element_by_id("query").send_keys(Keys.ARROW_DOWN)
# 通过回车键来代替单击操作
driver.find_element_by_id("query").send_keys(Keys.ENTER)

"26.操作单选框/复选框"
# 访问本地测试网页
url = "http://127.0.0.1/test_checkbox.html"
driver.get(url)
berryCheckBox = driver.find_element_by_xpath('//input[@value="berry"]')  # 返回一个元素
berryCheckBox.click()  # 选中复选框
print (berryCheckBox.is_selected())  # 判断元素是否已被选中,返回布尔值
berryCheckBox.click()  # 再次点击取消选中复选框
checkBoxList = driver.find_elements_by_xpath('//input[@name="fruit"]')  # 返回多个元素
print (checkBoxList)
# 选中所有的复选框
for i in checkBoxList:
    if not i.is_selected():
        i.click()


"27.截屏"
url = "http://www.baidu.com"
driver.get(url)
# 第一种方法:只截取浏览器上的屏幕 get_screenshot_as_file(fileName)
driver.get_screenshot_as_file("test.png")
# 第二种方法:截取整个桌面上的屏幕
from PIL import ImageGrab
im=ImageGrab.grab()
im.save("1.png")
# im.save("1.jpg","jpeg")


"28.拖拽页面元素"
# 访问本地测试网页
driver = webdriver.Firefox(executable_path = "d:\\geckodriver.exe")
url = "http://jqueryui.com/resources/demos/draggable/scroll.html"
driver.get(url)
firstPosition = driver.find_element_by_id("draggable")
secondPosition = driver.find_element_by_id("draggable2")
# 导入ActionChains
from selenium.webdriver import ActionChains
action_chains=ActionChains(driver)
# 将页面上第一个能被拖拽的元素拖拽到第二个元素位置drag_and_drop
action_chains.drag_and_drop(firstPosition,secondPosition).perform()
time.sleep(3)
# 将页面上第二个能拖拽的元素,向右下拖动100个像素drag_and_drop_by_offset
action_chains.drag_and_drop_by_offset(secondPosition,100,100).perform()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值