No.2 selenium学习之路之八种基本定位

selenium的八种定位方式

1.通过id定位     find_element_by_id()

send_keys() 输入框输入字符串

click()  鼠标点击事件

注:send_keys输入中文时,需要在前面添加“u”

2.通过name定位

find_element_by_name()

3.通过class定位

find_element_by_class_name()

4.通过tag定位

find_element_by_tag_name()

页码上标签一样的很多,那么通过tag是无法定位到某个元素

通常用于定位一组元素

5.通过link定位

find_element_by_link_text()

6.通过partial link定位

find_element_by_partial_link_text()

一个很长的文本,可以截取部分定位

7.XPath是一种在XML文档中定位元素的语言

//表示当前页面某个目录下,input表示单位元素的标签名,[@id= ‘kw‘ ]表示这个元素的id属性值等于kw,如果不想制定标签名,也可以用星号(*)代替,表示当前节点

driver.find_element_by_xpath("//input[@id=‘kw‘]").send_keys("123")

driver.find_element_by_xpath(".//*[@id=‘su‘]").click()

8.CSS定位

driver.find_element_by_css_selector("#kw").send_keys("123")

定位单一元素时,要保证元素是唯一的。

把定位工具切换到HTML,然后输入元素,确定是否是唯一

find_element()方法只用于定位元素

需要两个参数,一个是定位方式,一个是定位的值。

定位方式by,需要导入by类:

  from selenium.webdriver.common.by import By

find_element(By.ID,"kw")

常规操作:

1.切换iframe

  driver.switch_to_frame("x-URS-iframe")

2.清空输入框

  find_element_by_name("email").clear()

3.输入文本信息

  send_keys()

4.鼠标单击

  click(0

5.模拟回车操作

  submit()

  模拟回车的时候,需要光标在密码框

鼠标事件

from selenium.webdriver.common.action_chains import ActionChains

contest_click()  右击

double_click()   双击

drag_and_drop(source,target)  拖动

move_to_element()  鼠标悬停

鼠标悬停为重点

鼠标拖放:

  drag_and_drop(source,target)

  source鼠标拖动的源元素

  target鼠标释放的目标元素

键盘事件

from selenium.webdriver.common.keys import Keys

删除键backspace:

  send_keys(Keys.BACK_SPACE)

空格键space:

  send_keys(Keys.SPACE)

制表键Tab:

  send_keys(Keys.TAB)

回退键Esc:

  send_keys(Keys.ESC)

回车键Enter:

  send_keys(Keys.ENTER)

全选ctrl+a:

  send_keys(Keys.CONTROL,‘a‘)

复制ctrl+c:

  send_keys(Keys.CONTROL,‘c‘)

剪切ctrl+x:

  send_keys(Keys.CONTROL,‘x‘)

粘贴ctrl+v:

  send_keys(Keys.CONTROL,‘v‘)

键盘F1

  send_keys(Keys.F1)

键盘F5

  send_keys(Keys.F5)

键盘F12

  send_keys(Keys.F12)

时间: 2024-08-21 15:17:58

No.2 selenium学习之路之八种基本定位的相关文章

selenium自动化测试——常见的八种元素定位方法

selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位:find_element_by_tag_name() 4.通过 class 定位:find_element_by_class_name() 5.通过 css 定位:find_element_by_css_selector() 6.通过 link 定位:find_element_by_link_tex

selenium + Python (2) -- 常用8种元素定位

selenium常用的8种元素定位方式如下(代码可直接运行): # coding:utf-8 # 第一步导入需要的模块 from selenium import webdriver import time # 第二步打开浏览器 driver = webdriver.Firefox() # 第三步打开百度 driver.get("http://www.baidu.com") # 1. 操作浏览器对象-id driver.find_element_by_id("kw")

[原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

selenium学习之路之 处理日历控件

最近在研究selenium,碰到处理日期控件的问题,尝试数种方法均无果,最后终于找到一种可以成功的一种处理方式. 整个日历控制在div中: <input type="text" name="startDate" id="id_startdate1" size="15" maxlength="60" onfocus="assignValue('tr_attr_1');" onkeyd

No.1 selenium学习之路之浏览器操作

selenium基础,首先就是浏览器的相关操作 下面描述几种浏览器的常用操作 1.打开浏览器 webdriver后面添加想要打开的浏览器 Ie或者Chrome 2.打开指定页面(百度) 3.休眠时间 这里的休眠时间,是以秒为单位,需要导入time包 4.点击浏览器左箭头,返回上一页 5.点击浏览器右箭头,切换下一页 6.刷新浏览器 7.退出浏览器 退出这里有两个方法,可以用close和quit. close是关闭当前窗口,不会清空临时文件 quit是关闭浏览器,清空临时文件.

selenium学习之路3

自己用Python写了一个自动登陆qq邮箱的脚本,打开qq邮箱后总是报错:找不到元素. selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="switcher_plogin"] 试了各种方式,都找不到元素,什么元素都找不到. 然后有selenium ide录制脚本,才发现没有进入frame. 坑爹啊,看html就是没有发现啊,下次再有问题还是直接录制脚本好了,

No.11 selenium学习之路之加载浏览器插件for Firefox

打开帮助 -- 故障排除信息 点击显示文件夹 地址复制下来: 在代码中添加如下内容: 即可加载浏览器插件.

No.18 selenium学习之路之匿名函数lambda

定义: lambda 参数列表:return(表达式) 匿名函数的表达式,只允许有一个. 匿名函数一般用于较简单的情况. 实例1: 实例2,配合高阶函数filter()使用: filter()函数是 Python 内置的另一个有用的高阶函数, filter()函数接收一个函数 f 和一个list, 这个函数 f 的作用是对每个元素进行判断, 返回 True或 False, filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list.

mybatis学习之路----批量更新数据两种方法效率对比

原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方式有两种, 一种用for循环通过循环传过来的参数集合,循环出N条sql, 另一种 用mysql的case when 条件判断变相的进行批量更新 下面进行实现. 注意第一种方法要想成功,需要在db链接url后面带一个参数  &allowMultiQueries=true 即:  jdbc:mysql: