首页 > 作文

selenium基础

更新时间:2023-04-03 20:48:46 阅读: 评论:0

lenium

1.元素定位

1.1单个元素定位(8种)

#id,class_name,name,css,xpath,link_text,partial_link_text,tag_name#link_text:以超链接的全部名字作为关键字来定位#partial_link_text:以超链接的部分名字作为关键字来定位(首字符就可定位到)#tag_name:以标签名称定位import timefrom lenium import webdriverdriver=webdriver.Firefox()url='http://www.baidu.com'driver.get(url)driver.find_element_by_id('kw').nd_keys('id')time.s视频方案leep(5)driver.find_element_by_name('wd').nd_keys('name')time.sleep(5)driver.find_element_by_class_name('s_ipt').nd_keys('class_name')time.sleep(5)driver.find_element_by_xpath("//input[@id='kw']").nd_keys('xpath')time.sleep(5)driver.find_element_by_css_lector("#kw").nd_keys('css')time.sleep(5)driver.quit()

1.2多个元素定位

使用索引【x】

1.3使用By类定位

from lenium import webdriverfrom lenium.webdriver.common import Bydriver=webdriver.Firefox()url="http://www.baidu.com"driver.get(url)driver.find_element(By.ID,'kw').nd_keys('ByID')driver.find_element(By.ID,'kw').click()

1.4使用JavaScript定位

getElementsByTagName(),
getElementsByID(),
getElementsByClassName(),
getElementsByName(),
document.querySelectorAll()

from lenium import webdriverimport timedriver=webdriver.Firefox()url='https://www.jianshu.com/sign_in'driver.get(url)time.sleep(3)js_input='document.getElementsByTagName("input")[2].value="urname";'#execute_script()调用js方法执行JS脚本driver.execute_script(js_input)#js_register='document.getElementById("js-sign-up-btn").click()'#driver.execute_script(js_register)time.sleep(5)

1.5使用jQuery定位

jQuery定位同一用:document.querySelectorAll(),返回一个list对象

#css选择器css_btn='document.querySelectorAll(".sign=in=button")[0].click();'driver.execute_script(css_btn)

2.定位下拉框

2.1lect类

lect类提供三种方式:value,text,index

2.1.1 value属性定位

element=driver.find_element(By.ID,‘s1’)

from lenium import webdriverfrom lenium.webdriver.common.by import Byfrom lenium.webdriver.support.lect import Selectdriver=webdriver.Firefox()url=''driver.get(url)element=driver.find_element(By.ID,'s1')Select(element).lect_by_value('01')

2.1.2 text属性定位

Select(element).lect_by_visible_text('第一个')

2.1.3 index属性定位

索引下表从0开始

Select(element).lect_by_index(0)

2.2元素二次定位

driver.find_element_by_id('s1').find_element_by_xpath('//*[@id="id1"]').click()

元素二次定位操作下拉框内元素,必须增加click()单击事件才会生效

3.鼠标操作

3.1鼠标指针悬停

使用link_text定位到‘设置’按钮,使用move_to_element()方法将鼠标指针悬停到某个元素上面。perform()用于执行所有的动作

tting=driver.find_element_by_link_text(‘设置’)

ActionChains(driver).move_to_element(tting).perform()
fwait过去式rom lenium import webdriverfrom time import sleep#导入 ActionChains类from lenium.webdriver import ActionChainsdriver=webdriver.Firefox()url='http://www.baidu.com'driver.get(url)tting=driver.find_element_by_link_text('设置')ActionChains(driver).move_to_element(tting).perform()sleep(5)driver.find_element_by_link_text('搜索设置').click()sleep(5)

3.2鼠标右键

先定位到要右击的元素,然后通过context_click()方法执行鼠标右键操作

from lenium import webdriverfrom time import sleepfrom lenium.webdriver.common.action_chains import ActionChainsdriver=webdriver.Firefox()url='http://www.baidu.com'driver.get(url)sleep(5)#定位到‘百度一下’按钮元素context=driver.find_element_by_id('su')#模拟鼠标右键操作ActionChains(driver).context_click(context).perform()sleep(5)

3.3鼠标双击

from lenium import webdriverfrom time import sleepfrom lenium.webdriver.common.action_chains import ActionChainsdriver=webdriver.Firefox()url='http://www.baidu.com'driver.get(url)sleep(5)driver.find_element_by_id('kw').nd_keys('双击666')sleep(5)element=driver.医院锦旗赠语find_element_by_id('su')#模拟鼠标双击操作ActionChains(driver).double_click(element).perform()sleep(3)

4.元素等待

4.1强制等待

import timetime.sleep(5)

4.2隐式等待

driver.implicitly_wait(30):在规定的时间范围内,浏览器不停刷新页面,直到找到目标元素。如果找不到,抛异常。默认是0

from lenium import webdriverfrom time import sleepdriver=webdriver.Firefox()url='http://www.baidu.com'driver.get(url)driver.implicitly_wait(30)driver.find_element_by_id('kw').nd_keys('老铁')

4.3显式等待

等待某个元素的出现,或元素可单击,如果等不到就一直等下去。在规定时间内找不到抛异常

WebDriverWait()显式等待类,driver代表驱动,5代表最长超时时间,0.5表示每隔0.5就检测元素是否存在。

until():表示在等待期间,每隔一段时间调用传入的方法,直到为True.

EC.prence_of_all_elements_located():表示只要有一个符合条件的元素加载出来就通过。

from time import sleepfrom lenium import webdriverfrom lenium.webdriver.common.by import Byfrom lenium.webdriver.support.ui import WebDriverWaitfrom lenium.webdriver.support import expected_conditions as ECdriver=webdriver.Firefox()driver.get('https://mail.sina.com.cn/')element=WebDriverWait(driver,5,0.5).until(EC.prence_of_all_elements_located((By.ID,'freename')))element.nd_keys('hello')sleep(5)driver.quit()

5.表单切换

页面存在iframe标签

5.1单表单切换

from time import sleepfrom lenium import webdriverdriver=webdriver.Firefox()driver.get('https://mail.qq.com.cn/cgi-bin/loginpage')sleep(5)driver.switch_to_frame('login_frame')#切换iframe标签driver.find_element_by_name('email').nd_keys('urname')driver.find_element_by_name('password').nd_keys('password')driver.find_element_by_id('login_button').click()driver.switch_to.default_content()#退出iframe标签

5.2嵌套表单切换

from time import sleepfrom lenium import webdriverdriver=webdriver.Firefox()driver.get('https://mail.qq.com.cn/cgi-bin/loginpage')sleep(5)#切换到外层iframe标签driver.switch_to_frame('f1')#在切换到内层iframe标签driver.switch_to_frame('f2')driver.find_element_by_name('email').nd_keys('urname')driver.switch_to.default_content()#退出iframe标签#无论进入几层iframe标签,执行一次退出操作,就回到最外层

5.3平行表单切换

from time import sleepfrom lenium import webdriverdriver=webdriver.Firefox()driver.get('https://mail.qq.com.cn/cgi-bin/loginpage')sleep(5)#进入iframe1标作文500字大全签driver.switch_to_frame('f1')#退出iframe1标签driver.switch_to.default_content()#进入iframe2标签driver.switch_to_frame('f2')driver.find_element_by_name('email').nd_keys('urname')#退出iframe2标签driver.switch_to.default_content()

5.4表单特殊情况处理

当iframe标签本身id,name,属性值是一连串动态变化的字符串或没有可用的属性,可间接定位iframe标签。

6.窗口切换

6.1GET方法

driver.get('https://mail.qq.com.cn/cgi-bin/loginpage')

6.2switch方法

使用window_handles获取所有窗口,返回一个list对象,通过switch_to.window(window[index])方法切换指定窗口。索引下标从0开始

from lenium import webdriverfrom time import sleepfrom lenium.webdriver.common.by import Bydriver=webdriver.Firefox()url='/d/file/titlepic/src=none&ls= lenium import webdriverfrom time import  sleepdriver=webdriver.Firefox()driver.get('http://localhost:8080')#定位富文本,并向富文本中输入内容Ajs='document.getElementByID("content_ifr").contentWindow.document.body.innerHTML="%s"' % (A)driver.execute_script(js)

8.2处理隐藏元素

隐藏元素是指:style=“dispaly:none;”

from lenium import webdriverfrom lenium.webdriver.support.ui import Selectfrom lenium.webdriver.common.by import Byfrom time import  sleepdriver=webdriver.Firefox()url=''driver.get(url)sleep(5)#设置隐藏元素为可见js='document.querySelectorAll("lect")[0].style.dispaly="block";'driver.execute_script(js)sleep(4)element=driver.find_element(By.ID,'s3')Select(element).lect_by_visible_text('po设计模式')

8.3处理readonly属性

元素本身有readonly属性时,使用js语法移2017nba选秀除readonly属性

from lenium import webdriverfrom time import  sleepdriver=webdriver.Firefox()url=''driver.get(url)sleep(5)#移除readonly属性js1='document.getElementByID("train_date").removeAttribute("readonly");'driver.execute_script(js1)sleep(2)driver.find_element_by_id('train_date').clear()#清空日期driver.find_element_by_id('train_date').nd_keys('2020-07-06')#输入最新日期

8.4处理浏览器滚动条

window.scrollTo(0,10000):表示以像素为单位,0代表水平滚动条位置,10000代表垂直滚动条位置

driver.execute_script("window.scrollTo(0,10000);")#将页面滚动条拖到底部driver.execute_script("window.scrollTo(10000,0);")#将页面滚动条拖到顶部

使用键盘keys类下的DOWN,UP方法,只需要指明滚动条滚动的目标位置,在屏幕上的任何一个元素都可

# #导入键盘类from lenium.webdriver.common.keys import Keysfrom lenium import webdriverfrom time import  sleepdriver=webdriver.Firefox()driver.maximize_window()url='http://www.baidu.com'driver.get(url)driver.find_element_by_id('kw').nd_keys('好看')driver.find_element_by_id('su').click()sleep(5)driver.find_element_by_xpath('//*[@id="page"]/div/a[10]').nd_keys(Keys.DOWN)sleep(5)driver.find_element_by_xpath('//*[@id="s_tab"]/div/a[9]').nd_keys(Keys.UP)sleep(5)driver.quit()

9.lenium常用方法

(1)nd_keys():模拟键盘输入

driver.find_element_by_id('kw').nd_keys('输入内容')

(2)text:获取文本值

driver.find_element_by_link_text('百度一下').text

(3)get_attribute():获取属性值

driver.find_element_by_id('kw').get_attribute('value')

(4)maximize_window():实现浏览器窗口最大化

driver.maximize_window()

(5)current_window_handle:返回标识窗口的字符串

driver.current_window_handle

(6)current_url:获取当前窗口url

driver.current_url

(7)is_lected():判断元素是否被选择(多用于选择框)

driver.find_element_by_id('kw').is_lected()

(8)is_displayed():判断元素是否显示,显示返回True,否则返回Fal

driver.find_element_by_id('kw').is_displayed()

(9)is_enabled():判断元素是否可用,可用返回True,否则返回Fal

driver.find_element_by_id('kw').is_enabled()

(10)quit():退出

driver.quit()

(11)clear()

driver.clear()

(12)title:获取页面title

driver.title

(13)refresh():刷新页面(F5)

driver.refresh()

(14)back():后退

driver.back()

(15)forward():前进

driver.forward()

本文地址:https://blog.csdn.net/weixin_44679200/article/details/109241775

本文发布于:2023-04-03 20:48:27,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/6325367a52886239f4d9e78aa6eaaa6e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:selenium基础.doc

本文 PDF 下载地址:selenium基础.pdf

标签:元素   标签   方法   属性
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图