学习笔记之webdriver的API_01

控制浏览器

  1. 控制浏览器窗口大小
  2. 控制浏览器后退、前进
  3. 模拟浏览器刷新
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
#driver.set_window_size(480,800)   移动端窗口大小
driver.maximize_window() #窗口最大化
time.sleep(3)
driver.find_element_by_link_text("新闻").click()
time.sleep(3)
driver.back() #后退
time.sleep(3)
driver.forward() #前进到新闻页面
time.sleep(3)
driver.refresh() #刷新
time.sleep(3)
driver.quit() #关闭

简单的元素操作

from selenium import webdriver
import time
'''
size 返回元素尺寸
text 获取元素的文本,测试用例中的断言,测试中经常用 <a id='wb'>文本</a>
get_attribute(name) 获取元素的其他属性值
is_displayed() 设置该元素是否用户可见,检测页面的元素能不能被客户可见
'''
driver = webdriver.Chrome()
driver.get("http://www.126.com")

user_input = driver.find_element_by_id("idInput")
user_input.clear()
user_input.send_keys("username")

driver.find_element_by_id("idInput").clear() #清空文本框内容
driver.find_element_by_id("idInput").send_keys("usename") #send_keys模拟键盘输入
driver.find_element_by_id("pwInput").clear()
driver.find_element_by_id("pwInput").send_keys("password")
driver.find_element_by_id("loginBtn").click() #submit()表单提交,click()一切可以点击的,按钮、链接、复选框、单选框、选项卡
time.sleep(3)
driver.quit()
'''
python的编码问题
1.我们编写的源文件,自己写的脚本。使用Python2的时候,在头部制定cding=utf-8
2.执行脚本的环境编码。改变运行环境的编码类型,或者对识别不出来的元素进行代码转换,
  将识别不出来的元素以另外一种方式显示encode decode
  比如,百度网页中的@这个字符无法识别,
  text=driver.find_element_by_id("cp").text
  text2=text.encode("gbk","ignore").decode("gbk")
  print(text2)
3.读取外部文件的编码 encode decode
  files=open(“abc.text","r","utf-e")
  files2=files.encode("utf-8)
'''

打印百度页面底部文字

from selenium import webdriver
import time

driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
text1=driver.find_element_by_id("setf").text
text=driver.find_element_by_id("cp").text
print(text)
print(text1)

鼠标事件

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")

el=driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(el).perform()

#el =driver.find_element_by_id("kw")
#ActionChains(driver).context_click(el).perform()

'''
context_click() 右击
double_click() 双击
drag_and_drop()拖动  需要一个圆点和一个目标点
    el1 =driver.find_element_by_id("xx")
    el2 =driver.find_element_by_id("xx")
    ActionChains(driver).context_click(el1,el2).perform()
move_to_element()鼠标悬停
'''

键盘事件

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
driver =webdriver.Firefox()
driver.get("http://www.baidu.com")

#输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")
sleep(2)

#删除多输入的一个m
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
sleep(2)

#输入空格键+“教程”
driver.find_element_by_id("kw").send_keys(Keys.SPACE) #输入空格
driver.find_element_by_id("kw").send_keys("教程")
sleep(2)
#ctrl+a全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
sleep(2)
#ctrl+x剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
sleep(2)
#ctrl+v粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')
sleep(2)
#通过回车键盘来代替点击操作
driver.find_element_by_id("kw").send_keys(Keys.ENTER)
sleep(2)
driver.quit()

验证信息

from selenium import webdriver
from time import sleep
#写自动化测试用例的时候,用来做断言(验证)
#url
#title
#text
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

#搜索之前
title =driver.title
print(title)
url =driver.current_url
print("地址:"+url)

driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
sleep(2)

#搜索之后
title = driver.title
print(title)
url = driver.current_url
print("地址:"+url)

#断言
if title == "selenium_百度搜索":
    print("test case pass")
else:
    print("test case error")
driver.quit()

元素等待

显式等待,针对某个元素等待
隐试等待,针对当前页面当中的所有元素等待

显式等待:

#显示等待
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep

#By 元素定位
#WebDriverWait 等待方法
#expected_conditions 判断的方法
driver = webdriver.Firefox()
driver.get("http:www.baidu.com")

element = WebDriverWait(driver , 5 , 0.5).until(
    EC.presence_of_all_elements_located((By.ID , "kw"))
)
#driver 驱动
#5 等待的时间
#0.5 检测频率
#until中返回的参数必须是true的状态  ,查看是否是true还是false可以使用 is_display()
#until判断元素是否在DOM树中,如果元素不在DOM树中,会在5秒后抛出异常
element.send_keys("selenium")
sleep(2)
driver.quit()

另外一种书写方式:

from selenium import webdriver
from time import sleep,ctime

driver= webdriver.Firefox()
driver.get("http://www.baidu.com")
print(ctime())
for i in range(10):
     try:
         el = driver.find_element_by_id("kw")
         if el.is_displayed():
             break
    except:pass
    sleep(1)
else:
    print("time out")
driver.close()
print(ctime())

隐式等待:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Firefox()
driver.implicitly_wait(10)#隐式等待
driver.get("http://www.baidu.com")

input_=driver.find_element_by_id("kw")
input_.send_keys('selenium')
driver.quit()
发布了24 篇原创文章 · 获赞 0 · 访问量 562

猜你喜欢

转载自blog.csdn.net/MoLi_D/article/details/104157732
今日推荐