前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium 元素checkbox元素操作与元素等待

Selenium 元素checkbox元素操作与元素等待

作者头像
清风穆云
发布2021-08-09 11:14:30
1.5K0
发布2021-08-09 11:14:30
举报
文章被收录于专栏:QA一隅

概念

  • 显示等待是针对某一个元素进行相关等待判定;
  • 隐式等待不针对某一个元素进行等待,全局元素等待。

相关模块

  • WebDriverWait 显示等待针对元素必用
  • expected_conditions 预期条件类(下面很多方法可以调用,用于显示等待)
  • NoSuchElementException 用于隐式等待抛出异常
  • By 用于元素定位

模块引用

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait	from selenium.webdriver.support import expected_conditions as EC	
from selenium.common.exceptions import NoSuchElementException

显示等待

案例

检测百度页面搜索按钮是否存在,存在就输入关键词“自学网 Selenium” 然后点击搜索

代码实现
代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

from time import sleep

driver=webdriver.Firefox()

driver.get("http://www.baidu.com")


driver.find_element_by_css_selector(".s_ipt").send_keys("自学网 Selenium")

sleep(2)

#显示等待--判断搜索按钮是否存在
element=WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,"su")))
element.click()
sleep(3)

driver.quit()

隐式等待

代码语言:javascript
复制
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from time import sleep,ctime

driver=webdriver.Firefox()
driver.get("http://www.baidu.com")

sleep(2)

driver.implicitly_wait(5) #隐式等待时间设定 5秒

#检测搜索框是否存在
try:
	print(ctime())
	driver.find_element_by_css_selector("#kw22").send_keys("Python")
except NoSuchElementException as msg:
	print(msg)
finally:
	print(ctime())

sleep(3)
driver.quit()
isdisplay()方法来判断
代码语言:javascript
复制
#用displayed 来判断元素是否显示
print(ctime)
for i in range(10):
	el=driver.find_element_by_id("kw23")
	try:
		if el.isdisplyed():
			break
	except:pass	
	else:					#注意 有try except嵌套时,if else 不一定是和if对其
		print("timeout")
print(ctime())
checkbox应用背景

在实际项目过程中,会经常遇到页面的各自复选框,那么使用selenium该如何操作这些选项框呢?

Html页面
代码语言:javascript
复制
<html>
<head>

<title>
</title>    
</head>

<body>    
    <p><input type="checkbox" name="category" value="今日话题" />今日话题 </p>   
    <p><input type="checkbox" name="category" value="视觉焦点" />视觉焦点</p>
    <p><input type="checkbox" name="category" value="财经" />财经</p>    
    <p><input type="checkbox" name="category" value="汽车" />汽车</p>       

    <p><input id="btnOperate" type="button" value="选择" onclick="static_num()" /></p>

</body>
</html>
复选框定位

tag获取页面中所有的标签为input的元素 elements 多了一个“s” 这样可以获取一组元素

代码语言:javascript
复制
inputs=driver.find_elements_by_tag_name("input")

print("复选框的个数为")
print(len(inputs))

#xpath获取元素
#inputs=driver.find_elements_by_xpath("//input[@type='checkbox']")

#通过css来定位
#inputs=driver.find_elements_by_css_selector("input[type=checkbox]")
使用for循环遍历input的元素
代码语言:javascript
复制
for i in inputs:
	if i.get_attribute("type")=="checkbox": #获取元素属性为checkbox
		i.click()							#勾选方框
		time.sleep(1)

#去掉最后一个选修的勾 
driver.find_elements_by_xpath("//input[@type='checkbox']").pop(-1).click()
#pop(-1)获取最后一个,pop(0)获取第一个

更多干货

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 QA一隅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概念
  • 相关模块
  • 模块引用
  • 显示等待
    • 案例
      • 代码实现
      • 隐式等待
        • isdisplay()方法来判断
          • checkbox应用背景
            • Html页面
              • 复选框定位
                • 使用for循环遍历input的元素
                • 更多干货
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档