目录

  • 操作测试对象
  • 鼠标点击与键盘输入
  • submit 提交表单
  • text获取元素文本
  • 添加等待
  • sleep休眠
  • 隐式等待
  • 打印信息
  • 浏览器操作


操作测试对象

前面讲到了不少知识都是定位元素,定位只是第一步,定位之后需要对这个元素进行操作。是鼠标点击还是键盘输入,或者清除元素的内容,或者提交表单等。这个取决于定位元素需要进行的下一步操作。

webdriver 中比较常用的操作对象的方法有下面几个:

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

鼠标点击与键盘输入

  • send_keys() :键盘输入
  • click() :鼠标点击
  • clear() :清除输入框

刚刚的代码就操作了测试对象进行了鼠标的点击和键盘的输入操作
driver.find_element_by_css_selector('#kw').send_keys('俄乌冲突')这里定位到了输入框,然后通过send_keys()方法键盘输入了俄乌冲突driver_find_element_by_css_selector('#su').click()定位到搜索按钮,然后进行鼠标点击操作click()方法!

clear()清除输入框内容

# 清除输入框clear()
from selenium import webdriver
import time
driver = webdriver.Chrome()
# 打开音乐服务器的登入页面
driver.get('http://43.142.82.4:8080/login.html')
time.sleep(3)
# 定位到用户名和密码输入框并且清除内容
driver.find_element_by_id('user').clear()
driver.find_element_by_id('password').clear()
time.sleep(3)
driver.quit()

selenium 操作select java selenium select要先点击_输入框

submit 提交表单

  • submit(): 用于表单提交的方法

打开百度搜索页面,'百度一下’按钮的type=submit所以我们可以通过submit()方法代替click()达到同样的提交效果!
百度一下元素代码:
<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">

# 清除输入框clear()
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://baidu.com/')
time.sleep(2)
driver.find_element_by_id('kw').send_keys('xxs')
# 定位到表单提交按钮,通过submit方法进行表单提交
driver.find_element_by_id('su').submit()
time.sleep(3)
driver.quit()

selenium 操作select java selenium select要先点击_css_02

text获取元素文本

对操作对象进行.text方法就能获取到元素文本

# 清除输入框clear()
from selenium import webdriver
import time
driver = webdriver.Chrome()
# 打开音乐服务器的登入页面
driver.get('http://43.142.82.4:8080/login.html')
time.sleep(3)
# 定位到用户名的label,获取到text文本内容
date = driver.find_element_by_xpath('/html/body/div/form/div[1]/label').text
print(date)
time.sleep(3)
driver.quit()

selenium 操作select java selenium select要先点击_输入框_03


selenium 操作select java selenium select要先点击_selenium_04

添加等待

sleep休眠

添加休眠等待非常简单只需要引入time模块即可,通过模块下的sleep方法添加固定的休眠时间!

# 导入模块
import time
# 休眠3秒
time.sleep(3)

隐式等待

通过webdiver模块下的implicitly_wait()方法就可以实现智能等待,咱这个等待方式比time.sleep较智能,后者无论是否已经等待到都要等待固定时间,类似于等人,就算提前等到也好一起等待完固定时间再进行后续工作,而implicitly_wait()方式就是提前等到了,那就提前结束等待!

隐式地等待并非一个固定的等待时间,当脚本执行到某个元素定位时,如果元素可以定位,则继续执行;如果元素定位不到,则它以轮询的方式不断的判断元素是否被定位到。直到超出设置的时长!

# 通过css selector 通过css空间的属性名进行定位!
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://baidu.com/")
#定位输入框
driver.find_element_by_css_selector('#kw').send_keys('俄乌冲突')
driver.implicitly_wait(3000) # 隐式等待3000秒
#css selector方式定位到搜索按钮
driver.find_element_by_css_selector('#su').click()
time.sleep(3)
driver.quit()


打印信息

  • 打印title

将页面的title打印出来

  • 打印url

将url打印

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://baidu.com/')
# 打印title 和 url
print("title:",driver.title,"\n","url:",driver.current_url)
driver.quit()

selenium 操作select java selenium select要先点击_输入框_05

浏览器操作

  • 浏览器最大化
    webdriver模块下的.maximize_window()方法
  • 设置浏览器宽、高
    .set_window_size(width, high)设置浏览器的宽和高
  • 操作浏览器的前进、后退
    #浏览器的前进 browser.forward()#浏览器的后退 browser.back()
  • 控制浏览器滚动条
    浏览器滚动条的控制要依靠js脚本
#将浏览器滚动条滑到最顶端
document.documentElement.scrollTop=0
#将浏览器滚动条滑到最底端
document.documentElement.scrollTop=10000
#将浏览器滚动条滑到最底端, 示例
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
#其中,execute_script(script, *args),在当前窗口/框架同步执行javaScript

代码示例

# 浏览器操作
from selenium import webdriver
import time
driver = webdriver.Chrome()
#浏览器最大化
driver.maximize_window()
time.sleep(2)
# 设置浏览器宽,高
driver.set_window_size(400,300)
time.sleep(2)
# 浏览器最大化
driver.maximize_window()
driver.get('http://baidu.com/')
driver.find_element_by_id('kw').send_keys('中国')
driver.find_element_by_id('su').submit()
time.sleep(2)
#浏览器后退
driver.back()
time.sleep(2)
#浏览器前进
driver.forward()
time.sleep(2)
#操作浏览器滚动条到滚动到底端
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(2)
# 滚动到顶端
js = 'var w = document.documentElement.scrollTop=0'
driver.execute_script(js)
time.sleep(3)
driver.quit()