我们再做UI自动化过程中经常要获取一些属性信息,用来验证我们的自动化case是否通过,那么一般会用到哪些呢?1、driver.title获取title信息title信息一般就是在我们页面代码中的html的head中有个title标签,如下图:
那么代码如何实现呢?
- from selenium import webdriver
- import time
- driver = webdriver.Chrome()
- driver.get('http://www.bcbxhome.com')
- time.sleep(1)
- title = driver.title
- print(title)
复制代码2、driver.current_url获取当前的url地址比如我们通过跑自动化形式在自动打开页面,如果我们想要验证我们打开页面的url是否正确,就需要用到driver.current_url获取当前的url地址
- from selenium import webdriver
- import time
- driver = webdriver.Chrome()
- driver.get('http://www.bcbxhome.com')
- time.sleep(1)
- url = driver.current_url
- print(url)
复制代码3、通过get_attribute获取某个控件的属性值
比如我们通过id定位到了这个input后,我想获取这个控件的value属性值,那么怎么获取呢?
- from selenium import webdriver
- import time
- driver = webdriver.Chrome()
- driver.get('http://www.bcbxhome.com')
- time.sleep(1)
- driver.find_element_by_id("scbar_txt").get_attribute("value")
复制代码4、通过text方法获取控件上的文案信息
比如我要获取编测编学学院控件上的文字信息,那么我们可以先定位到它,然后再通过.text获取到它上边的文字内容:
- from selenium import webdriver
- import time
- driver = webdriver.Chrome()
- driver.get('http://www.bcbxhome.com')
- time.sleep(1)
- print(driver.find_element_by_xpath("//div[@class='bm_h cl'][1]/h2/a").text)
复制代码5、通过.is_displayed()方法获取控件是否已经加载出来因为我们要去操作一个控件就得等这个控件完全加载出来才可以对它操作,所以我们就需要通过.is_displayed()方法判断下控件是否显示出来.is_displayed方法的源码如下:
- # RenderedWebElement Items
- def is_displayed(self):
- """Whether the element is visible to a user."""
- # Only go into this conditional for browsers that don't use the atom themselves
- if self._w3c:
- return self.parent.execute_script(
- "return (%s).apply(null, arguments);" % isDisplayed_js,
- self)
- else:
- return self._execute(Command.IS_ELEMENT_DISPLAYED)['value']
复制代码其实通过源码我们可以看出来.is_displayed返回的是一个boolean值,如果控件已经加载出来了,那么它返回的是TRUE,如果控件未加载出来返回的就是FALSE。
- from selenium import webdriver
- import time
- driver = webdriver.Chrome()
- driver.get('http://www.bcbxhome.com')
- time.sleep(1)
- print(driver.find_element_by_xpath("//div[@class='bm_h cl'][1]/h2/a").is_displayed())
复制代码6、通过.size方法获取控件的尺寸讲此方法之前我们先看下.size方法的源码,如下:
- @property
- def size(self):
- """The size of the element."""
- size = {}
- if self._w3c:
- size = self._execute(Command.GET_ELEMENT_RECT)['value']
- else:
- size = self._execute(Command.GET_ELEMENT_SIZE)['value']
- new_size = {"height": size["height"],
- "width": size["width"]}
- return new_size
复制代码通过源码很清晰的就可以看出来它获取的是控件的宽和高。那么如何实现呢?
- from selenium import webdriver
- import time
- driver = webdriver.Chrome()
- driver.get('http://www.bcbxhome.com')
- time.sleep(1)
- aa = driver.find_element_by_xpath("//div[@class='bm_h cl'][1]/h2/a").size
- print(aa)
复制代码运行代码后,我们看下返回的尺寸是怎么样的呢?
通过返回内容其实我们可以知道它返回的是一个字典,那么怎么获取单独的height或者width呢?
- print(aa['height'])
- print(aa['width'])