selenium元素操作

1、元素操作

2、浏览器操作

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By


driver = webdriver.Edge()

driver.get(r'https://www.baidu.com/?tn=85070231_1_hao_pg')
driver.set_window_size(1000,1000)  #设置浏览器窗口大小 -->设置浏览器宽、高(像素点)
driver.set_window_position(300,300)  #设置浏览器窗口位置-->设置浏览器位置
driver.maximize_window()  #最大化浏览器窗口-->模拟浏览器最大化按钮
driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[1]').click()
#要注意此处的页面跳转是新打开一个网页 还是当前页面跳转  如果是新开了一个网页 name前进后退操作无法执行
sleep(3)
driver.back()   #后退-->模拟浏览器后退按钮
sleep(3)
#前进必须放在后退之后执行
driver.forward()   #前进 -->模拟浏览器前进按钮
sleep(3)
driver.refresh()   #刷新 -->模拟浏览器F5刷新
print(driver.title)   #获取页面title    是属性不是方法   driver.title()写法错误
print(driver.current_url)   #获取当前页面URL  是属性不是方法
sleep(3)
driver.close()  #关闭当前窗口 -->模拟点击浏览器关闭按钮
sleep(3)
driver.quit()   #关闭浏览器驱动对象-->关闭所有程序启动的窗口


3、获取元素信息

# 获取元素信息
# size  返回元素大小
# text  获取元素的文本
# get_attribute("xxx")  获取属性值,传递的参数为元素的属性名
# is_displayed() 判断元素是否可见
# is_enabled()  判断元素是否可用
# is_selected()  判断元素是否选中,用来检查复选框或单选按钮是否被选中

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By


driver = webdriver.Edge()

driver.get(r'https://www.selenium.dev/selenium/web/web-form.html')
elementA=driver.find_element(By.XPATH,'//*[@id="my-text-id"]')
elementB=driver.find_element(By.XPATH,'/html/body/main/div/form/div/div[2]/div[3]/label')
elementB.click()  #选中复选框
print('元素大小',elementA.size)
print('元素文本',elementA.text)
print('元素属性的名称',elementA.get_attribute('name'))
print('元素是否可见',elementA.is_displayed())
print('元素是否可用',elementA.is_enabled())
print('复选框是否被选中',elementB.is_selected())

sleep(3)
driver.close()
4、鼠标操作 

from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver = webdriver.Edge()

driver.get(r'https://www.baidu.com/?tn=85070231_1_hao_pg')
elementA=driver.find_element(By.XPATH,'//*[@id="bottom_layer"]/div/p[1]/a')
elementB=driver.find_element(By.XPATH,'//*[@id="kw"]')
#实例化并获取Aactionchains类
actions = ActionChains(driver)    #ctrl+alt+空格自动导包
#悬停
actions.move_to_element(elementA).perform()
sleep(2)
#右键点击
actions.context_click(elementA).perform()
sleep(2)
#双击
actions.double_click(elementA).perform()
sleep(2)
#拖拽
actions.drag_and_drop(elementA,elementB).perform()


sleep(3)
driver.close()

 

 5、键盘操作
   5.1、Keys类

                  seleniu中吧键盘的按键都封装在Keys类中

                导包  from selenium.webdriver.common.keys import Keys

5.2、常用的键盘操作

5.3、代码演示
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

driver = webdriver.Edge()

driver.get(r'https://www.selenium.dev/selenium/web/web-form.html')

elementA=driver.find_element(By.XPATH,'//*[@id="my-text-id"]')
elementB=driver.find_element(By.XPATH,'/html/body/main/div/form/div/div[1]/label[3]/textarea')
elementA.send_keys('hahahhahah')
elementA.send_keys(Keys.CONTROL, "a")  #ctrl+a全选
sleep(3)
elementA.send_keys(Keys.CONTROL, "c") #ctrl+c复制
sleep(3)
elementB.send_keys(Keys.CONTROL, "v")
sleep(3)
elementB.send_keys(Keys.CONTROL, "a")
sleep(3)
elementB.send_keys(Keys.BACK_SPACE)   #删除键
sleep(3)

driver.close()
 5.4、提示

        1.选中代码中的Keys使用ctrl+B可查看底层  底层中包含每个键的编码

        2、应用

                组合键:element.send_keys(Keys.XXX,'a')  #XXX+a

                单键:element.send_keys(Keys.XXX)         #XXX

selenium中为什么鼠标类需要创建实例化对象 Keys类不需要创建对象?

6、元素等待
     

1、为什么要设置元素等待

         由于电脑配置或网络原因,在查找元素时,元素代码未在第一时间内被加载出来,而抛出未找到元素异常。
  2、 什么是元素等待
在第一次未找到时,元素等待设置的时长被激活,如果在设置的有效时长内找到元素,继续执行代码,如果超出设置的时长未找到元素,抛出未找到元素异常。

元素等待分类:  隐式等待    显式等待

6.1、隐式等待


方法:  driver.implicitlywait(30)    #一般情况下设置30秒
特色:针对所有元素生效。

一般情况下为前置必写代码(1.获取浏览器驱动对象:2.最大化浏览器:3.设置隐式等待)

6.2、显式等待

概念:定位指定元素时,如果能定位到元素则直接返回该元素,不触发等待;如果不能定位到该元素,则间隔一段时间后再去定位元素:如果在达到最大时长时还没有找到指定元素,则抛出超
时异常 TimeoutException 。

在Selenium中把显式等待的相关方法封装在WebDriverWait类中

显示等待实现代码:

6.3、显式等待与隐式等待区别

1、显示等待:针对单个元素生效

2、隐式等待:针对全局元素生效

7、总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值