selenium元素操作--判断元素是否可用、可选中、是否可见

本文介绍了如何在Selenium中使用is_selected(),is_displayed(),is_enabled()方法来判断网页元素的可见性、可点击状态,以及通过实际代码展示了如何应用这些方法到复选框、span标签和取消按钮上。

在这里插入图片描述

小Tisp:

Ctrl + 左键可以调出某方法的使用

判断元素是否可被选中

is_selected() 方法

返回一个布尔值,若可见则返回: True 。若不可见则返回: False 。

Code

法1

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("file:///C:/Users/S3214/Downloads/pagetest/%E6%B3%A8%E5%86%8CA.html")

selected = driver.find_element(By.CSS_SELECTOR, '#lyA').is_selected()
print(selected)
# 法1 selected返回值为Ture,满足条件可以直接用selected代替Ture
# if为Ture(真),打印1;否则(为假),打印2
if selected:
    print("【旅游】复选框被选中")
else:
    print("【旅游】复选框没被选中")

time.sleep(3)
driver.quit()

效果图

/*
C:\Programs\Python\Python38\python.exe C:/pythonProject/ke.py
True
【旅游】复选框被选中

Process finished with exit code 0
*/

法2【不严谨】

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("file:///C:/Users/S3214/Downloads/pagetest/%E6%B3%A8%E5%86%8CA.html")

selected = driver.find_element(By.CSS_SELECTOR, '#lyA').is_selected()
print(selected)
if(selected == True):
    print("【旅游】复选框被选中")
else:
    print("【旅游】复选框没被选中")

time.sleep(3)
driver.quit()
C:\Programs\Python\Python38\python.exe C:/pythonProject/ke.py
True
【旅游】复选框被选中

Process finished with exit code 0

判断元素是否可可见

is_displayed()

方法返回一个布尔值,若可见则返回: True 。若不可见则返回: False 。

Code

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("file:///C:/Users/S3214/Downloads/pagetest/%E6%B3%A8%E5%86%8CA.html")
# span标签是否可见
display=driver.find_element(By.CSS_SELECTOR,'span').is_displayed()
if(display == True):
    print("span标签可见")
else:
    print("span标签不可见")
time.sleep(3)
driver.quit()

在这里插入图片描述

判断元素是否可用、点击

is_enabled() 方法返回一个布尔值,若可点击返回: True 。若不可点击则返回: False

Code

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("file:///C:/Users/S3214/Downloads/pagetest/%E6%B3%A8%E5%86%8CA.html")

# 取消按钮是否可用
enabled = driver.find_element(By.CSS_SELECTOR, '#cancelA').is_enabled()
if enabled:
    print("取消按钮可用")
else:
    print("取消按钮不可用")

time.sleep(3)
driver.quit()

效果图

在这里插入图片描述

总结

1、元素若有 is_disabled 属性,则是不可点击,否则就是可点击。

2、元素若有 is_display:none 属性,则是不可见的,否则就是可见的。

3、元素若有 selected 属性,则是已被选择。

Selenium是一个用于Web自动化测试的工具,以下从使用指南、教程、应用场景和解决方案几个方面介绍相关信息: ### 使用指南 在使用Selenium时,首先需要导入相应的库,如`from selenium import webdriver`,并选择合适的浏览器驱动,如Chrome浏览器使用`webdriver.Chrome()`。之后可以使用`driver.get(url)`方法打开指定网页。定位元素是关键步骤,可通过不同方式,如`find_element_by_id`、`find_element_by_link_text`、`find_element_by_css_selector`等。获取元素相关信息时,有多种方法可用- 获取元素属性信息:使用`get_attribute('id/name/value等')`方法,例如获取搜索按钮的id属性`ele1.get_attribute('id')`,获取搜索框的name属性`ele2.get_attribute('name')`等 [^1]。 - 获取元素的CSS属性值:可以通过相关方法获取元素的CSS属性值 [^1]。 - 获取元素大小、文本、标签名:使用`.tag_name`输出元素的标签名,`.size`输出元素的大小,`.text`输出元素的文本(适用于链接元素),如`print(ele.tag_name)`、`print(ele.text)`、`print(ele.size)` [^3]。 - 判断元素状态:使用`is_displayed()`判断元素是否可见,`is_selected()`判断元素是否选中,`is_enabled()`判断元素是否可用 [^2][^4]。 ### 教程示例代码 #### 获取元素属性信息 ```python from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("https://www.baidu.com/") ele1 = driver.find_element_by_id('su') # 通过id定位百度搜索按钮 ele2 = driver.find_element_by_id('kw') # 通过id定位百度搜索框 print(ele1.get_attribute('id')) # 输出搜索按钮的id属性 print(ele2.get_attribute('name')) # 输出搜索框的name属性 print(ele1.get_attribute('value')) # 输出按钮的文字,也就是value属性 print(type(ele1.get_attribute('name'))) print(ele1.get_attribute('name')) driver.quit() ``` #### 获取元素大小、文本等信息 ```python from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("https://www.baidu.com/") # 打开百度首页 ele = driver.find_element_by_link_text('新闻') # 将新闻这个元素赋给变量ele print(ele.tag_name) # 输出标签名 print(ele.text) # 输出文本 print(ele.size) # 输出大小 driver.quit() ``` #### 获取元素状态信息 ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://news.baidu.com/") # 新闻标题 element1 = driver.find_element_by_css_selector("label[class='not-checked']") # 新闻标题选择框 element2 = driver.find_element_by_css_selector("#newstitle") # 新闻标题的大小({'height', 'width'}) print(element1.size) # 新闻标题的文本 print(element1.text) # 新闻标题是否可见 print(element1.is_displayed()) # 新闻标题标签内的for属性 print(element1.get_attribute("for")) # 新闻标题选择框是否选中 print(element2.is_selected()) ``` ### 应用场景 - 自动化测试:对Web应用进行功能测试、兼容性测试等,模拟用户在浏览器中的各种操作,如点击、输入等,验证页面的功能是否正常。 - 数据采集:从网页中自动提取所需的数据,如新闻标题、商品信息等。 ### 解决方案 - 元素定位失败:可尝试使用不同的定位方式,如id、class、css选择器等;检查元素是否在iframe中,若在则需要先切换到iframe中再进行定位。 - 页面加载缓慢:可使用`WebDriverWait`设置显式等待,等待元素加载完成后再进行操作,避免因元素未加载完成而导致定位失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值