webdriver API

目录

1、定位元素(课件selinum2)

2、操作测试对象

3、添加等待

4、打印tile

5、打印网址

6、浏览器最大化、设置长宽

7、操作浏览器的前进、后退

8、控制浏览器滚动条

9、键盘事件

10、鼠标事件

11、selenium操作一组元素

12、alert

13、DIV对话框的处理

14、上传文件


1、定位元素

  • id(一般全局唯一)
  • name
  • class name
  • link text
  • partial link text
  • tag name
  • xpath(一般全局唯一)
  • css selector

定位前提:元素必须拥有这个属性、全局唯一。

2、操作测试对象

一般来说,webdriver 中比较常用的操作对象的方法有下面几个:

  • click 点击对象
  • send_keys 在对象上模拟按键输入
  • clear 清除对象的内容,如果可以的话
  • submit 清除对象的内容,如果可以的话
  • text 用于获取元素的文本信息

***先搜索,再清除,在搜索

from selenium import webdriver
import time
driver=webdriver.Chrome();
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("天刀手游")
driver.find_element_by_id("su").click();
time.sleep(4)
driver.find_element_by_id("kw").clear()
time.sleep(2)
driver.find_element_by_id("kw").send_keys("眷思量")
driver.find_element_by_id("su").click()
time.sleep(4)
driver.quit()

submit:

仅限元素有submit属性的;

driver.find_element_by_id("kw").send_keys("天刀手游")

#submit()提交表单,这里和click()功能一样
driver.find_element_by_id("su").submit()

text:用于获取元素的文本信息

from selenium import webdriver
import time
driver=webdriver.Chrome();
driver.get("https://www.baidu.com/")
driver.maximize_window()
text=driver.find_element_by_id("bottom_layer").text
print(text)
time.sleep(4)
driver.quit()

3、添加等待

(1)固定等待

from selenium import webdriver
import time
driver=webdriver.Chrome();
driver.get("https://www.baidu.com/")
driver.maximize_window()
#休眠等待,严格执行设置的等待时间
time.sleep(10)
driver.find_element_by_id("kw").send_keys("cxk")
driver.find_element_by_id("su").submit()
time.sleep(4)
driver.quit()

(2)智能等待

  • implicitly_wait()

        通过添加implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait(30)的用法应该比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。隐式地等待一个无素被发现或一个命令完成;这个方法每次会话只需要调用一次time_to_wait: 等待时间。

from selenium import webdriver
import time
driver=webdriver.Chrome();
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("cxk")
driver.find_element_by_id("su").submit()
#隐式等待 轮询查看后续元素存在就执行,到点了不存在就抛出异常
driver.implicitly_wait(8)
driver.find_element_by_link_text("蔡徐坤 - 百度百科").click()
time.sleep(4)
driver.quit()

4、打印tile

  • title=driver.title

from selenium import webdriver
import time

driver=webdriver.Chrome();
driver.get("https://www.baidu.com/")
driver.maximize_window()
title=driver.title
print(title)
driver.find_element_by_id("kw").send_keys("cxk")
driver.find_element_by_id("su").click()
time.sleep(4)
title1=driver.title
print(title1)
driver.quit()

5、打印网址

  • driver.current_url
from selenium import webdriver
import time
driver=webdriver.Chrome();
driver.get("https://www.baidu.com/")
driver.maximize_window()
url=driver.current_url
print(url)
driver.find_element_by_id("kw").send_keys("cxk")
driver.find_element_by_id("su").click()
time.sleep(4)
url1=driver.current_url
print(url1)
driver.quit()

6、浏览器最大化、设置长宽

  • driver.maximize_window() #浏览器最大化
  • driver.set_window_size(长,宽)

7、操作浏览器的前进、后退

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

8、控制浏览器滚动条

  • 将页面滚动条拖到底部
  • 将页面滚动条拖到底部
  1. js="var q=document.documentElement.scrollTop=10000" #scrollTop:距离顶端距离
  2. driver.execute_script(js) #execute_script(script, *args),在当前窗口/框架同步执行javaScript
driver=webdriver.Chrome();
driver.get("https://www.baidu.com/")
#driver.maximize_window()
driver.find_element_by_id("kw").send_keys("cxk")
driver.find_element_by_id("su").click()
time.sleep(4)
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)#execute_script(script, *args),在当前窗口/框架同步执行javaScript
time.sleep(4)
driver.quit()

9、键盘事件

(1)键盘按键用

要想调用键盘按键操作需要引入keys 包: from selenium.webdriver.common.keys import Keys

通过send_keys()调用按键:

    • send_keys(Keys.TAB) # TAB
    • send_keys(Keys.ENTER) # 回车
  • 禅道登录演示
  • from selenium import webdriver
    import time
    from selenium.webdriver.common.keys import Keys
    
    driver=webdriver.Chrome();
    driver.get("http://127.0.0.1:88/zentao/user-login-L3plbnRhby8=.html")
    driver.maximize_window()
    driver.find_element_by_id("account").send_keys("你的用户名")
    driver.find_element_by_name("password").send_keys("你的密码")
    #enter登录
    driver.find_element_by_name("password").send_keys(Keys.ENTER)
    
    time.sleep(4)
    driver.quit()

(2)键盘组合键用法

  • CTRL+A:send_keys(Keys.CONTROL,'a')
  • 其他同理;
    • ctrl+a,ctrl+x,enter
    • from selenium import webdriver
      import time
      from selenium.webdriver.common.keys import Keys
      driver=webdriver.Chrome();
      driver.get("https://www.baidu.com/")
      driver.maximize_window()
      driver.find_element_by_id("kw").send_keys("cxk")
      driver.find_element_by_id("su").click();
      time.sleep(4)
      driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
      time.sleep(4)
      driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
      time.sleep(4)
      driver.find_element_by_id("kw").send_keys("蔡徐坤")
      driver.find_element_by_id("kw").send_keys(Keys.ENTER)
      time.sleep(4)
      driver.quit()

10、鼠标事件

  • 双击、右击
  • from selenium import webdriver
    import time
    from selenium.webdriver.common.action_chains import ActionChains
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    driver.maximize_window()
    driver.find_element_by_id("kw").send_keys("cxk")
    q=driver.find_element_by_id("su")
    #右击
    ActionChains(driver).context_click(q).perform()
    time.sleep(6)
    #双击
    ActionChains(driver).double_click(q).perform()
    time.sleep(6)
    driver.quit()

11、selenium操作一组元素

一、选中checkbox

from selenium import webdriver
import time
import os
url="file:///"+os.path.abspath("D:/javabit/test-/selenium2html/checkbox.html")
driver=webdriver.Chrome()
driver.get(url)
inputs=driver.find_elements_by_tag_name("input")
for i in inputs:
if i.get_attribute('type')=='checkbox':
i.click()
time.sleep(6)
driver.quit()

二、多层框架窗口定位

#coding=utf-8
from selenium import webdriver
import time
import os
browser = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('D:/javabit/test-/selenium2html/frame.html')
browser.get(file_path)
browser.implicitly_wait(30)
#先找到到frame1(id = f1)
browser.switch_to.frame("f1")
#再找到其下面的frame2(id =f2)
browser.switch_to.frame("f2")
#下面就可以正常的操作元素了
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
time.sleep(3)

#从f2不可以直接跳转到f1(先回到默认框架,再去f1)
browser.switch_to_default.content()
browser.switch_to.frame("f1")
browser.find_element_by_link_text("click").click()


browser.quit()

三、层级定位

#coding=utf-8
from selenium import webdriver
import time
import os
from selenium.webdriver.common.action_chains import ActionChains
browser = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('D:/javabit/test-/selenium2html/level_locate.html')
browser.get(file_path)
time.sleep(4)
browser.find_element_by_link_text("Link1").click()
a=browser.find_element_by_link_text("Another action")
ActionChains(browser).move_to_element(a).perform()
time.sleep(3)
browser.quit()

四、下拉框定位

# coding=utf-8
from selenium import webdriver
import time
import os
browser = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('D:/javabit/test-/selenium2html/drop_down.html')
browser.get(file_path)
time.sleep(4)
#方法1:
# browser.find_element_by_xpath("//*[@id='ShippingMethod']/option[3]").click()
#方法2:循环遍历 找到value=10.69的
options = browser.find_elements_by_tag_name("option")
# for option in options:
# if option.get_attribute('value') == '10.69':
# option.click()
#方法3:下标
options[2].click()
time.sleep(3)
browser.quit()

12、alert

# coding=utf-8
from selenium import webdriver
import time
import os
browser = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('D:/javabit/test-/selenium2html/alert.html')
browser.get(file_path)
time.sleep(3)
browser.find_element_by_id("tooltip").click()
time.sleep(2)
#首先获得alert的操作句柄
alert=browser.switch_to.alert
#关闭弹框
alert.accept()
time.sleep(3)
browser.quit()

# coding=utf-8
from selenium import webdriver
import time
import os
browser = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('D:/javabit/test-/selenium2html/send.html')
browser.get(file_path)
time.sleep(2)
browser.find_element_by_tag_name("input").click()
time.sleep(2)
#首先获得alert的操作句柄
alert=browser.switch_to.alert
#给文本框输入信息
alert.send_keys("cxk")
#关闭弹框
alert.accept()
time.sleep(3)
browser.quit()

13、DIV对话框的处理

# coding=utf-8
from selenium import webdriver
import time
import os
browser = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('D:/javabit/test-/selenium2html/modal.html')
browser.get(file_path)
time.sleep(2)
#1.点击click按钮
browser.find_element_by_id("show_modal").click()
time.sleep(2)
#2.定位弹框中的元素
browser.find_element_by_id("click").click()
time.sleep(2)
#关闭弹窗
browser.find_element_by_xpath("//*[@id='myModal']/div[3]/button[1]").click()
time.sleep(2)
browser.quit()

14、上传文件

# coding=utf-8
from selenium import webdriver
import time
import os
browser = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('D:/javabit/test-/selenium2html/upload.html')
browser.get(file_path)
time.sleep(2)
#上传操作
browser.find_element_by_name("file").send_keys('D:\\javabit\\122.jpg')
time.sleep(2)
browser.quit()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium WebDriver 是一种用于自动化Web应用程序测试的工具,它提供了一系列的API,用于操作浏览器来模拟用户的行为。它是基于Java编写的,因此可以使用Java语言来编写测试脚本。 Selenium WebDriver API 提供了一些常用方法来控制浏览器,如打开网址、在输入框中输入文本、点击按钮等。这些方法可以让我们对页面上的元素进行定位和操作,以模拟用户在浏览器中的行为。 使用 Selenium WebDriver API,我们可以使用多种定位方式来找到页面上的元素,如通过id、name、class等属性进行定位,也可以通过XPath和CSS选择器来定位。定位到元素后,我们可以对其执行一系列的操作,如获取元素的文本、获取元素的属性、点击元素等。 Selenium WebDriver API 还提供了一些常用的操作方法,如切换窗口、切换到iframe、执行JavaScript等。这些方法可以帮助我们处理一些特殊的页面场景,如弹窗、嵌套的iframe等。 使用 Selenium WebDriver API,我们可以编写可维护和可扩展的测试脚本。通过使用Java语言的面向对象特性,我们可以将测试代码进行模块化,使其更加易读和易于维护。此外,Selenium WebDriver 还支持多种浏览器,如Chrome、Firefox等,我们可以轻松地在不同的浏览器上运行测试脚本。 总之,Selenium WebDriver API 提供了丰富的功能和强大的灵活性,使得我们可以编写高效和可靠的自动化测试脚本。无论是对于新手还是有经验的测试人员来说,掌握这些API是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值