019、元素状态判断 (is_selected()、is_displayed()、is_enable() )
一、元素状态判断
.is_selected(): 判断元素是否选中状态
.is_displayed(): 判断元素是否显示
. is_enable(): 判断元素是否可操作
1、元素状态判断 .is_selected() 适用场景:radio和checkbox
示例代码如下:
# -*- coding:utf-8 -*-
# Author: Sky
# Email: 2780619724@qq.com
# Time: 2021/8/18 0:32
# Project: day01
# Module: study_15.py
# Environment: Python3.8.6 , Selenium3 环境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://49.235.92.12:8200/users/login/")
time.sleep(3)
driver.find_element_by_id("username").send_keys("112233456@qq.com")
driver.find_element_by_id("password_l").send_keys("123456")
driver.find_element_by_id("jsLoginBtn").click()
time.sleep(2)
# 鼠标悬停的操作
mouse = driver.find_element_by_class_name("personal")
ActionChains(driver).move_to_element(mouse).perform()
time.sleep(2)
# 点进入个人中心
driver.find_element_by_class_name("personcenter").click()
time.sleep(2)
# radio 相关操作
element_nv = driver.find_element_by_xpath('//*[@id="jsEditUserForm"]/ul/li[4]/label[2]/input')
# 1.判断未点击之前元素的状态
status_1 = element_nv.is_selected() # 判断元素是否被选中 False/True
print("未点击之前元素的状态:%s" % status_1)
# 点击元素
element_nv.click()
status_2 = element_nv.is_selected() # 判断元素是否被选中 False/True
print("点击之后元素的状态:%s" % status_2)
# check_box
driver.find_element_by_xpath('//*[@value="cypress"]').click()
# 状态判断is_selected()
cypress = driver.find_element_by_xpath('//*[@value="cypress"]')
print(f'未点击之前的状态:{cypress.is_selected()}')
if not cypress.is_selected():
cypress.click()
print(f'点击之后的状态:{cypress.is_selected()}')
# checkbox 全部勾选
all_checkboxs = driver.find_elements_by_name("fancy")
print(all_checkboxs)
# 循环,先判断后操作
for i in all_checkboxs:
if not i.is_selected():
i.click()
print("打印checkbox的状态:%s" % i.is_selected())
driver.quit()
2、元素状态判断 .is_displayed():判断元素是否显示
元素是否存在页面上(这里的存在不是肉眼看到的存在,html代码中存在 元素的visibility为hidden或者display属性为none)
我们在页面看不到但是实际是存在页面的一些元素 ;
示例代码如下:
# -*- coding:utf-8 -*-
# Author: Sky
# Email: 2780619724@qq.com
# Time: 2021/8/18 12:25
# Project: day01
# Module: study_20.py
# Environment: Python3.8.6 , Selenium3 环境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://49.235.92.12:8200/users/login/")
# 隐藏元素定位
csrftoken = driver.find_element_by_name("csrfmiddlewaretoken")
# 判断元素是不是显示状态
print(csrftoken.is_displayed())
driver.quit()
执行结果如下:
D:\SkyWorkSpace\WorkSpace\Web_AutoTest\Temp\day01\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Web_AutoTest/Temp/day01/ch_002/study_20.py
False
Process finished with exit code 0
常见面试题:隐藏元素如何定位?:跟不隐藏的元素一样定位。
https://www.cnblogs.com/insane-Mr-Li/p/9077519.html
3、. is_enable() 判断元素是否可操作
元素有disabled属性,不能再点了
. is_enable() : 判断元素是否可点击
点之前状态是True
点了后状态是False
示例代码如下,不能运行,因为网页没有了:
# -*- coding:utf-8 -*-
# Author: Sky
# Email: 2780619724@qq.com
# Time: 2021/8/18 12:25
# Project: day01
# Module: study_20.py
# Environment: Python3.8.6 , Selenium3 环境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://49.235.92.12:8200/courses/detail/1/")
time.sleep(3)
btn = driver.find_element_by_id("bt")
print("点之前元素的状态:%s" % btn.is_enabled())
btn.click()
print("点之后元素的状态:%s" % btn.is_enabled())
time.sleep(3)
driver.quit()