selenium三种方法isEnable()、isDisplayed()和isSelected()的区别

isEnable()、isDisplayed()和isSelected()
1、以上三个为布尔类型的函数
2、isEnable用于存储input、select等元素的可编辑状态,可以编辑返回true,否则返回false
3、isDisplayed()这个有点陌生,在大神写的脚本看到几次不知道何用意先不管,本身这个函数用于判断某个元素是否存在页面上(这里的存在不是肉眼看到的存在,而是html代码的存在。某些情况元素的visibility为hidden或者display属性为none,我们在页面看不到但是实际是存在页面的一些元素)
4、isSelected(),很显然,这个是判断某个元素是否被选中。例如
页面展示如下:
isEnable()、isDisplayed()和isSelected()
html代码如下:
isEnable()、isDisplayed()和isSelected()

java判断元素是否被选中:
WebElement ele=driver.findElement(By.xpath(“//*[@id=’productAttributeType’]/option[3]”)); //获得“数字”这个元素
Boolean flag=ele.isSelected(); //判断“数字”元素是否选中,将状态赋给flag
System.out.println(“元素是否选中?”+flag);

打印结果:
元素是否选中?true

发布了34 篇原创文章 · 获赞 32 · 访问量 8万+
展开阅读全文

selenium元素已显示点击报错ElementNotInteractableException

09-17

代码如下: # 此类封装一些常用的浏览器操作 class BasePage(object): def __init__(self,driver): self.driver = driver # 退出浏览器 def quit_browser(self): self.driver.quit() # 显式等待_元素可见_XPATH def wait_explicit_located(self,x_path): try: WebDriverWait(self.driver, 5).until( EC.visibility_of_all_elements_located((By.XPATH, x_path))) logger.info(u"目标元素已显示 %s" %x_path) except TimeoutException as e: logger.error(u"元素%s显示异常 %s" % (x_path,e)) print u'元素显示异常%s' %x_path self.get_windows_image() #输入 def type(self,selector,text): el = self.find_element(selector) el.clear() try: el.send_keys(text) logger.info("Had type \' %s \' in inputBox" % text) except NameError as e: logger.error("Failed to type in input box with %s" % e) self.get_windows_image() ...... ``` ``` from ZJCH_selenium.framework.base_page import BasePage #此类是登录页面的方法 class LoginPage(BasePage): loginname_box = "xpath=>.//*[@class='login']//*[@class='lg']" pwd_box = "xpath=>.//*[@class='login']//*[@class='pwd']" verification_box = "xpath=>.//*[@class='login']//*[@name='yanzheng']" login_btn = "xpath=>.//*[@class='login']//*[@class='log log1']" #5位验证码定位 yzm1 = "xpath=>.//*[@class='rt']/span[1]" yzm2 = "xpath=>.//*[@class='rt']/span[2]" yzm3 = "xpath=>.//*[@class='rt']/span[3]" yzm4 = "xpath=>.//*[@class='rt']/span[4]" yzm5 = "xpath=>.//*[@class='rt']/span[5]" login_in = "xpath=>.//*[@class='alert_information']/b" #我知道了按钮的定位 def type_loginname(self, text): self.type(self.loginname_box, text) def type_pwd(self, text): self.type(self.pwd_box, text) def get_yzm(self): yzm_1 = self.get_text(self.yzm1) yzm_2 = self.get_text(self.yzm2) yzm_3 = self.get_text(self.yzm3) yzm_4 = self.get_text(self.yzm4) yzm_5 = self.get_text(self.yzm5) yzm = yzm_1 + yzm_2 + yzm_3 + yzm_4 + yzm_5 return yzm #输入验证码 def type_verification(self, text): self.type(self.verification_box, text) #点击登录按钮 def send_login_btn(self): self.click(self.login_btn) #点击我知道了 def send_iknow_btn(self): self.click(self.login_in) ``` ``` import unittest from ZJCH_selenium.framework.browser_engine import BrowserEngine from ZJCH_selenium.pageobjects.login_page import LoginPage #此类是测试登录功能 class test_ZJCH_Login(unittest.TestCase): def setUp(self): browse = BrowserEngine(self) self.driver = browse.open_browser(self) def tearDown(self): self.driver.quit() def test_login(self): loginpage = LoginPage(self.driver) loginpage.wait_explicit_located(".//*[@class='login']") loginpage.type_loginname('admin') #输入用户名 loginpage.type_pwd('123456') #输入密码 yzm = loginpage.get_yzm() #得到验证码 loginpage.type_verification('{}'.format(yzm)) #输入验证码 loginpage.send_login_btn() #点击登录按钮 loginpage.wait_explicit_located(".//*[@class='alert_information']/b") loginpage.send_iknow_btn() #点击确认登录 ![图片说明](https://img-ask.csdn.net/upload/201709/17/1505622234_129486.png) ** 利用unittest执行测试用例,登录页面可以正常登录,点击我知道了按钮后也正常进入系统首页,从网页上看没有任何异常,但用HTMLTestRunner缺报错,如图** ![图片说明](https://img-ask.csdn.net/upload/201709/17/1505623692_398671.png) **我测试过多次,执行到loginpage.wait_explicit_located(".//*[@class='alert_information']/b"),都没有错误,执行loginpage.send_iknow_btn() 就报错(问题是网页操作正常,可以进入系统首页,但为什么生成的测试报告缺有报错), 我试了下把loginpage.send_iknow_btn()去掉,采用 self.driver.find_element_by_xpath(".//*[@class='alert_information']/b").click() 如果采用这句代码就正常运行没有任何报错,这是为什么呢? [我知道了]这个窗口是在验证了用户登录成功后弹出的一个提示窗口,点击就可以进入系统首页的 另:我已经验证过,loginpage.wait_explicit_located(".//*[@class='alert_information']/b")这句显示等待已经成功的等待了【我知道了】窗口显示才执行的loginpage.send_iknow_btn() 到loginpage.wait_explicit_located(".//*[@class='alert_information']/b")都没有任何问题,元素已显示,点击操作也正常,但是生成到报告里就报错,哪位大神能帮我看看是为什么啊,真的想不通,我的HTMLTestRunner应该不会有问题的,其他测试用例都没什么问题** 然后我试了不采用框架,就没有任何报错,代码如下 import time 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 driver = webdriver.Firefox() driver.get("http://localhost:8089/chcgypt/login.html") driver.maximize_window() WebDriverWait(driver, 5).until( EC.visibility_of_element_located((By.XPATH, ".//*[@class='login']"))) driver.find_element_by_xpath(".//*[@class='login']//*[@class='lg']").send_keys("admin") #输入用户名 driver.find_element_by_xpath(".//*[@class='login']//*[@class='pwd']").send_keys("123456") #输入密码 #获取验证码并输入 a = driver.find_element_by_xpath(".//*[@class='rt']/span[1]").text b = driver.find_element_by_xpath(".//*[@class='rt']/span[2]").text c = driver.find_element_by_xpath(".//*[@class='rt']/span[3]").text d = driver.find_element_by_xpath(".//*[@class='rt']/span[4]").text e = driver.find_element_by_xpath(".//*[@class='rt']/span[5]").text yzm = a+b+c+d+e driver.find_element_by_xpath(".//*[@class='login']//*[@name='yanzheng']").send_keys(yzm) #点击登录按钮 driver.find_element_by_xpath(".//*[@class='login']//*[@class='log log1']").click() WebDriverWait(driver, 5).until( EC.visibility_of_all_elements_located((By.XPATH, ".//*[@class='alert_information']/b"))) #点击我知道了按钮进入系统 driver.find_element_by_xpath(".//*[@class='alert_information']/b").click() time.sleep(3) driver.current_window_handle #验证是否进入系统首页 WebDriverWait(driver,5).until(EC.presence_of_all_elements_located((By.XPATH,".//*[@class='welcomeToOurWeb']"))) try: WebDriverWait(driver, 5).until( EC.visibility_of_all_elements_located((By.XPATH, ".//*[@class='welcomeToOurWeb']"))) flag = True except TimeoutException: flag = False # 这种方式,就没有任何错误 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览