1、文本按钮操作相关

  • send_keys()输入文本
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
time.sleep(2)
dr.find_element_by_id("kw").send_keys("selenium")
  • clear()清除文本
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
time.sleep(1)
dr.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)
dr.find_element_by_id("kw").clear()
  • click()点击按钮
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
time.sleep(1)
dr.find_element_by_id("kw").send_keys("selenium")
time.sleep(1)
dr.find_element_by_id("su").click()
  • submit()类似输入文本后回车
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
time.sleep(1)
dr.find_element_by_id("kw").send_keys("selenium")
time.sleep(1)
dr.find_element_by_id("kw").submit()
  • size 返回元素的尺寸
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
time.sleep(1)
print (dr.find_element_by_id("su").size)
  • text 获取文本
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("http://192.168.0.161:8081/discuz/forum.php")
time.sleep(1)
print (dr.find_element_by_id("ls_fastloginfield_ctrl").text)

2、常见的 webdriver 方法

  • get_window_size()  获取浏览器窗口大小
  • set_window_size(480,800)       设置浏览器窗口大小
  • maximize_window()  浏览器窗口最大化
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
time.sleep(1)
print (dr.get_window_size())
time.sleep(2)
dr.maximize_window()
time.sleep(2)
dr.set_window_size(800,500)
  • get_attribute()获取元素属性值
product_name = driver.find_element_by_id('currentItem').get_attribute("title")
if name == product_name:
print ("ok!")
else:
raise AssertionError
  • back()向后
  • forward()向前
  • refresh()刷新
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
time.sleep(1)
dr.find_element_by_link_text("hao123").click()
time.sleep(2)
dr.back()
time.sleep(2)
dr.forward()
time.sleep(2)
dr.refresh()
  • close()关闭当前选项卡页面
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("http://192.168.0.161:8081/discuz/forum.php")
time.sleep(1)
dr.find_element_by_link_text("交友").click()
time.sleep(2)
dr.close() #关闭当前句柄窗口
from selenium import webdriver
from time import sleep
dr = webdriver.Chrome()
#打开第一个网页"百度"
dr.get("https://www.baidu.com")
sleep(2)
#打开第二个网页"京东"
js = 'window.open("https://www.jd.com")'
dr.execute_script(js)
sleep(2)
#关闭当前句柄的窗口
dr.close()
  • quit()关闭所有选项卡页面
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("http://192.168.0.161:8081/discuz/forum.php")
time.sleep(1)
dr.find_element_by_link_text("交友").click()
time.sleep(2)
dr.quit()
from selenium import webdriver
from time import sleep
dr = webdriver.Chrome()
#打开第一个网页"百度"
dr.get("https://www.baidu.com")
sleep(2)
#打开第二个网页"京东"
js = 'window.open("https://www.jd.com")'
dr.execute_script(js)
sleep(2)
#关闭当前浏览器
dr.quit()
  • 窗口滚动操作

    • js = "window.scrollTo(300,200)"   #300表示左边距,200表示上边距
    • js = "document.documentElement.scrollTop=200" #向下滑动200px
    • js = "document.documentElement.scrollLeft=300" #向右滑动300px
    • execute_script(js)
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
time.sleep(1)
dr.set_window_size(800,500)
time.sleep(2)
js = "window.scrollTo(300,200)" #300表示左边距,200表示上边距
dr.execute_script(js)
from selenium import webdriver
from time import sleep
dr = webdriver.Chrome() dr.get("https://www.cnblogs.com/ZhengYing0813")
# print(dr.get_window_size())
dr.set_window_size(500,500)
sleep(1)
# js = "document.documentElement.scrollTop=200" #向下滑动200px
# js = "document.documentElement.scrollLeft=300" #向右滑动300px
# dr.execute_script(js)
n = 0
while 1000 > n:
n += 100
js = "document.documentElement.scrollTop=" + str(n)
dr.execute_script(js)
sleep(2) sleep(3)
dr.quit()
  • title 获取页面 title
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("http://192.168.0.161:8081/discuz/forum.php")
time.sleep(1)
print ("当前title:" + dr.title)
  • current_window_handle  当前页面的句柄
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("http://192.168.0.161:8081/discuz/forum.php")
time.sleep(1)
print ("当前句柄:" + dr.current_window_handle)
dr.find_element_by_link_text("交友").click()
print ("当前句柄:" + dr.current_window_handle)
  • window_handles  当前所有的句柄,返回句柄列表
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("http://192.168.0.161:8081/discuz/forum.php")
time.sleep(1)
print ("当前句柄:" + dr.current_window_handle)
dr.find_element_by_link_text("交友").click()
print ("所有句柄:" + dr.window_handles)
  • switch_to_window()   切换窗口(一般通过句柄切换)
from selenium import webdriver
import time
dr = webdriver.Chrome()
dr.get("http://192.168.0.161:8081/discuz/forum.php")
time.sleep(1)
print ("首页title:" + dr.title)
dr.find_element_by_link_text("交友").click()
dr.switch_to_window(dr.window_handles[1])
print ("此时title:" + dr.title)

3、鼠标相关

  • context_click()右击
  • double_click()双击
  • drag_and_drop()拖拽
  • drag_and_drop_by_offset()拖拽
  • move_to_element()鼠标悬停
  • perform()执行
"""
鼠标悬浮
"""
# 第一种方法(二次定位)
from selenium import webdriver
from time import sleep
dr = webdriver.Chrome()
dr.maximize_window()
dr.get("https://www.baidu.com")
sleep(2)
dr.find_element_by_link_text("设置").click()
dr.find_element_by_link_text("搜索设置").click()
sleep(2)
dr.quit() # 第二种方法
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #导入鼠标操作模块
import time #导入时间模块
dr = webdriver.Chrome() #webdriver类实例化
dr.get("https://www.baidu.com")
time.sleep(1)
element = dr.find_element_by_link_text("设置") #定位到鼠标要悬浮的元素
ActionChains(dr).move_to_element(element).perform()
#鼠标操作类实例化,传driver驱动 将鼠标悬浮到元素上 执行悬浮操作
time.sleep(1)
dr.find_element_by_link_text("高级搜索").click() #点击设置按钮下的元素
time.sleep(3)
dr.close()
"""
drag_and_drop 拖拽
"""
sourse=driver.find_element_by_id('xx') #定位元素要移动的目标位置
target=driver.find_element_by_id('yy') #执行元素的拖放操作
ActionChains(driver).drag_and_drop(sourse,target).perform()
"""
drag_and_drop_by_offset 拖拽,处理滑块验证
"""
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
dr = webdriver.Chrome()
dr.get("https://shopcs.yunyoute.com/login")
dr.maximize_window()
dr.implicitly_wait(10)
time.sleep(2)
drag1 = dr.find_element_by_class_name("evenBox") # 定位到滑块
ActionChains(dr).drag_and_drop_by_offset(drag1,1572,708).perform() # 拖拽到指定坐标 (1572,708)
"""
鼠标右击操作
"""
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
dr = webdriver.Chrome()
dr.get("https://shopcs.yunyoute.com/login")
dr.maximize_window()
dr.implicitly_wait(10)
time.sleep(2)
inp = dr.find_element_by_xpath('//*[@id="app"]/div/div[2]/div/div/div/div/div/div[3]/div[1]/input[2]')
ActionChains(dr).context_click(inp).perform()

4、selenium 中三种等待方式

(1)线程等待(强制等待):time.sleep(s)

import time
from selenium import webdriver dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
dr.find_element_by_css_selector('[id=kw]').send_keys("selenium")
time.sleep(2)
dr.quit()

(2)隐式等待:dr.implicitly_wait(s)  等待页面所以的元素加载完成,则会自动进行下一步操做,如果等待时间超过设置的时间则会报错

from selenium import webdriver

dr = webdriver.Chrome()
dr.implicitly_wait(10)
dr.get("https://www.baidu.com")
dr.find_element_by_css_selector('[id=kw]').send_keys("selenium")
dr.quit()

(3)显式等待:等待页面特定的某个元素加载后,才会进行下一步操作,如果在设定的时间内没有找到则会报错

from selenium import webdriver
# 两种导入WebDriverWait方式
# from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.ui import WebDriverWait
#通过 as 关键字将 expected_conditions 重命名为EC
from selenium.webdriver.support import expected_conditions as EC
#导入By模块
from selenium.webdriver.common.by import By dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
#presence_of_element_located 必须以元组的形式传入,所以使用到By方法进行定位
try:
element = WebDriverWait(driver=dr,timeout=10,poll_frequency=0.5).until(EC.presence_of_element_located((By.ID,"kw")))
element.send_keys("selenium")
finally:
dr.quit()
  • WebDriverWait(driver,timeout,poll_frequency,ignored_exceptions)

    • driver:浏览器驱动
    • timeout:最长超时时间,默认以秒为单位
    • poll_frequency:检测的间隔(步长)时间,默认为 0.5S
    • ignored_exceptions:超时后的异常信息,默认情况下抛 NoSuchElementException 异常
  • WebDriverWait() 一般由 until() 或 until_not() 方法配合使用
until(method, message=' ')      #调用该方法提供的驱动程序作为一个参数,直到返回值为True
until_not(method, message=' ') #调用该方法提供的驱动程序作为一个参数,直到返回值为False
  • EC 预置条件模块具有很多类型的判断:

    • presence_of_element_located                  判断当前元素是否存在
    • presence_of_all_elements_located             判断一组元素是否存在
    • text_to_be_present_in_element_value       判断元素值是否有xx文本信息
    • presence_of_all_elements_located             判断一组元素是否存在

5、单 / 复选框相关

dr.get("http://127.0.0.1:8848/html/checkbox.html")
list=dr.find_elements_by_xpath("//*[@class='tbmu']/td/label")
for i in list:
i.click()#勾选全部标签

6、下拉框处理

(1)select 模块定位

  • Select 提供了三种选择方法:    

    • select_by_index(index) ——通过选项的顺序,第一个为 0
    • select_by_value(value) ——通过 value 属性
    • select_by_visible_text(text) ——通过选项可见文本
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
dr = webdriver.Chrome()
dr.get("http://127.0.0.1:8848/project/html/Drop_down_box.html")
time.sleep(1)
element = dr.find_element_by_id("birthprovince")
Select(element).select_by_index(5)
Select(element).select_by_value("山西省")
Select(element).select_by_visible_text("河北省") 
  • Select 提供了四种方法取消选择:(只能取消选择多选选项)

    • deselect_by_index(index)
    • deselect_by_value(value)
    • deselect_by_visible_text(text)
    • deselect_all()

(2)二次定位(基本思路,先定位 select 框,再定位 select 里的选项)

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
dr = webdriver.Chrome()
dr.get("http://127.0.0.1:8848/project/html/Drop_down_box.html")
time.sleep(1)
#两次定位
element = dr.find_element_by_id("birthprovince")
element.find_element_by_xpath('//*[@id="birthprovince"]/option[5]').click()

7、frame 处理

(1)switch_to.frame()选择一个 frame  --->  只能用 id 或 name 定位 frame

from selenium import webdriver
import time dr = webdriver.Chrome()
dr.get("http://192.168.0.161:8081/discuz/forum.php")
dr.maximize_window()
dr.find_element_by_id("ls_username").send_keys("xfs")
dr.find_element_by_id("ls_password").send_keys("")
dr.find_element_by_css_selector('[type="submit"]').click()
time.sleep(2)
dr.find_element_by_link_text("学员作业专区").click()
dr.find_element_by_xpath('//*[@id="newspecial"]/img').click() #发帖
time.sleep(2)
dr.find_element_by_id("subject").send_keys("test")
time.sleep(1)
dr.switch_to_frame("e_iframe") #直接定位frame框架,只能通过id/name定位
time.sleep(1)
dr.find_element_by_xpath('/html/body').send_keys(u"测试一下")

(2)假如 iframe 没有可定位的 id 或 name 那么可以通过 xpath 先定位到 iframe,再将对象传给 switch_to.frame():如下

from selenium import webdriver
import time dr = webdriver.Chrome()
dr.get("http://192.168.0.161:8081/discuz/forum.php")
dr.maximize_window()
dr.find_element_by_id("ls_username").send_keys("zhengying")
dr.find_element_by_id("ls_password").send_keys("zhengying123456")
dr.find_element_by_css_selector('[type="submit"]').click()
time.sleep(2)
dr.find_element_by_link_text("学员作业专区").click()
dr.find_element_by_xpath('//*[@id="newspecial"]/img').click()
time.sleep(2)
dr.find_element_by_id("subject").send_keys("test")
time.sleep(1)
frame = dr.find_element_by_css_selector("#e_body > div > iframe") #先定位到frame
dr.switch_to.frame(frame) #再将frame的对象传进去
time.sleep(1)
dr.find_element_by_xpath('/html/body').send_keys("dmlafjiuwnkdsncqwfcwnoqncsdknfwcnsdkfn")

(3)dr.switch_to.default_content()  取消选择一个 frame(跳回最外层的页面)

dr.switch_to.parent_frame()  取消选择一个 frame(跳出当前 frame)

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time dr.get("http://192.168.0.161:8081/discuz/forum.php")
dr.maximize_window()
dr.find_element_by_id("ls_username").send_keys("zhengying")
dr.find_element_by_id("ls_password").send_keys("zhengying123456")
dr.find_element_by_css_selector('[type="submit"]').click()
time.sleep(2)
dr.find_element_by_link_text("学员作业专区").click()
dr.find_element_by_xpath('//*[@id="newspecial"]/img').click()
time.sleep(2)
dr.find_element_by_id("subject").send_keys("test")
time.sleep(1)
dr.switch_to_frame("e_iframe") #通过frame的id进行传参
dr.find_element_by_xpath('/html/body').send_keys(u"测试一下")
time.sleep(2)
dr.switch_to_default_content()
time.sleep(2)
dr.find_element_by_link_text("学员作业专区").click()

8、弹窗相关

  • switch_to.alert.accept()   #确定
  • switch_to.alert.dismiss()   #取消
  • switch_to.alert.text   #获取弹框信息
from selenium import webdriver
import time dr = webdriver.Chrome()
dr.get("http://127.0.0.1:8848/project/html/Alert.html")
time.sleep(2)
dr.find_element_by_class_name("xxx").click()
time.sleep(2)
# dr.switch_to_alert().accept() #确定
print (dr.switch_to_alert().text) #捕获弹窗内容
time.sleep(1)
dr.switch_to_alert().dismiss() #取消

9、数据库操作

  • dos窗口下安装pymysl -->  pip install pymysql
  • 游标概念:SQL 的游标是一种临时的数据库对象,游标的一个常见用途就是保存查询结果,以便后续调用或者使用(游标是系统为用户开设的一个数据缓冲区,存放 SQL 语句的执行结果)
  • 游标 cursor():该方法会帮我们获取操作游标这时游标会为我们提供方法:
    • 执行脚本命令
    • 接受返回值
  • db=pymysql.connect("IP 地址","用户名","密码","数据库名",charset='utf8')
  • cursor=db.cursor() 获取游标
  • fetchone()   提取第一行数据
  • fetchall()   提取所有数据
  • fetchmany(size)  根据 size 值提取具体行数
  • 注意:当游标cursor中的某条数据被取出后,当前查询结果中则不能再次提取该条数据
import pymysql

def con(ip,user,password,database,port,sql):
db = pymysql.connect(ip,user,password,database,int(port),charset='utf8')
cursor = db.cursor()
cursor.execute(sql)
print (cursor.fetchone())
print (cursor.fetchall())
print (cursor.fetchmany(5))
db.close() con("192.168.1.222","root","","study",3306,"select * from user;")

python selenium(常用关键字)的更多相关文章

  1. RF - selenium - 常用关键字 - 示例

    1. 打开浏览器 Open Browser    http://www.baidu.com    chrome 2. 关闭浏览器 Close Browsers Close All Browser 3. ...

  2. RF - selenium - 常用关键字

    1. 打开浏览器 Open Browser    htpp://www.testclass.net    chrome 2. 关闭浏览器 Close Browsers Close All Browse ...

  3. python selenium常用基本方法---H5和键盘鼠标操作

    一.模拟手机打开页面(H5测试) from selenium import webdriver mobile_emulation = {'deviceName':'iPhone X'} options ...

  4. Python selenium常用用法

    1.获取当前页面的Url 方法:current_url 实例:driver.current_url 2.获取元素坐标 方法:location 解释:首先查找到你要获取元素的,然后调用location方 ...

  5. [python]selenium常用的操作

    浏览器 1.火狐浏览器 br = webdriver.Firefox() #最大化窗口br.maximize_window() br.get('http://baidu.com') 2.谷歌浏览器 b ...

  6. Python+Selenium(webdriver常用API)

    总结了Python+selenium常用的一些方法函数,以后有新增再随时更新: 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口:  ...

  7. Python+selenium常用方法(Webdriver API)

    小编整理了目前学习的Python+selenium常用的一些方法函数,以后有新增再随时更新. 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() ...

  8. 基于python的selenium常用操作方法(1)

    1 selenium定位方法    Selenium提供了8种定位方式. ·         id ·         name ·         class name ·         tag ...

  9. Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...

  10. python+selenium自动测试之WebDriver的常用API(基础篇二)

    本篇介绍一下python+selenium复杂操作的处理,基于python3.6,selenium3.141,详细资料介绍查看官方API文档,点击这里 一.常见特殊情况处理如iframe/弹窗处理 有 ...

随机推荐

  1. .net跨域接口服务器端配置

    在项目Config文件中添加一下节点配置 <system.webServer> <httpProtocol> <customHeaders> <add nam ...

  2. 页面DIV弹出层 JS原生脚本

    <script type="text/javascript"> /*         * 弹出DIV层         */ function showDiv() { ...

  3. json格式的文件操作

    1.字典转换为字符串(json.dumps) jsongeshi={"name":"yajuan","age":"10" ...

  4. 22.4 Extends --super 和 this 的区别

    /* * this和super的区别 this:当前对象的引用 调用子类的成员变量 调用子类的成员方法 在子类的构造方法第一行调用子类其他构造方法 super:子类对象的父类引用 调用父类的成员变量 ...

  5. java异常处理:finally中不要return

    java异常处理:finally中不要return 复制代码 public class Ex1 { public static void main(String[] args) { System.ou ...

  6. 【Java】【设计模式 Design Pattern】单例模式 Singleton

    什么是设计模式? 设计模式是在大量的实践中总结和理论化之后的最佳的类设计结构,编程风格,和解决问题的方式 设计模式已经帮助我们想好了所有可能的设计问题,总结在这些各种各样的设计模式当中,也成为GOF2 ...

  7. JSON Extractor(JSON提取器)

    JSON提取器 Variable names(名称):提取器的名称Apply to(应用范围):Main sample and sub-samples:应用于主sample及子sampleMain s ...

  8. E2. Send Boxes to Alice (Hard Version)

    秒的有点难以理解:https://blog.csdn.net/weixin_42868863/article/details/103200132 #include<bits/stdc++.h&g ...

  9. 网站假死 重启NGINX无效 必须重启PHP 原因分析

    一.错误提示说明: Nginx 502 Bad Gateway:请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止. Nginx 504 G ...

  10. CSS- 一些少用的

    1. 字体间距 1.)word-spacing: 2.)letter-spacing: 3.)text-indent 4.)text-align-last: justify; 和 text-align ...