知识点043-selenium自动化测试网页工具的使用

【摘要】css

Selenium是一个主要用于Web应用自动化测试的工具集合。但其做用不单单局限于测试领域,还能够用于浏览器行为模拟以及屏幕抓取等,在行业内有着普遍的应用。Selenium支持主流的浏览器,包括Chrome、Firefox、IE、Safari 以及Opera等。本文将经过Selenium对Chrome浏览器进行操纵,以模拟一个简单的Web应用自动化测试流程,python版本为2.7.14,selenium版本为3.14.0。python

【正文】web

  • 操做过程

安装selenium,能够经过pip命令简单操做便可

pip install seleniumajax

下载对应chrome版本的chrome driver(本文将其放置在与python代码文件的上层目录)

导入selenium所要用到的模块

import oschrome

from selenium import webdriver浏览器

from selenium.webdriver.support.ui import WebDriverWait函数

 

获取chrome driver位置

dir = os.path.join(os.path.dirname(__file__), os.path.pardir)工具

chrome_driver_path = dir + '\chromedriver.exe'测试

启动一个chrome 会话

driver = webdriver.Chrome(chrome_driver_path)ui

driver.implicitly_wait(30)

driver.maximize_window()

 

访问URL(本文是访问本地web应用的地址)

driver.get('http://127.0.0.1:8000/task_check/')

定位返回页面中的元素,并进行对元素进行操做。本文将经过定位IP输入框,输入测试值以对结果进行筛选,并检查返回结果。

 

selenium提供了多种find_ element_ by/find_ elements_ by方法用于定位页面元素,经常使用的定位方法有

方法

用途

find_elements_by_id()

经过元素的ID属性值来定位元素

find_elements_by_name()

经过元素的name属性值来定位元素

find_elements_by_class_name()

经过元素的class属性值来定位元素

find_elements_by_xpath()

经过XPath来定位元素

find_elements_by_css_selector()

经过CSS选择器来定位元素

find_elements_by_link_text()

经过元素标签对之间的文本信息来定位元素

 

经常使用的对于元素操做方法有

方法

用途

clear()

清除文本框或文本域中的内容

click()

单击元素

send_ keys()

输入文本

submit()

is_ displayed()

提交表单

判断元素是否可见

is_ enabled()

判断元素是否可用

is_ selected()

判断元素是否被选中

get_ attribute()

获取元素属性值

获取IP输入框,并清空其文本内容

search_field = driver.find_element_by_id('ip')

search_field.clear()

自定义一个延时等待函数,以实现等待页面彻底加载完成后再进行下一步操做,避免获取元素时目标元素还没有加载的状况。

def wait_for_ajax(driver):

    wait = WebDriverWait(driver, 15)

    try:

        wait.until(lambda driver: driver.execute_script('return jQuery.active') == 0)

        wait.until(lambda driver: driver.execute_script('return document.readyState') == 'complete')

    except Exception as e:

        print e.message

在IP输入框输入值,并点击搜索

wait_for_ajax(driver)

search_field.send_keys('192.168.163.3')

wait_for_ajax(driver)

driver.find_element_by_xpath('//button[@onclick="get_log_list()"]').click()

获取返回结果,本文获取表格的部分列信息

wait_for_ajax(driver)

results1 = driver.find_elements_by_xpath("//tr/td[2]")

results2 = driver.find_elements_by_xpath("//tr/td[4]")

results3 = driver.find_elements_by_xpath("//tr/td[5]")

# driver.find_elements 的结果只能迭代一次,对于一些不可见的元素也会包含,可是没有text值

text1 = [i.text for i in results1 if i.text]

text2 = [i.text for i in results2 if i.text]

text3 = [i.text for i in results3 if i.text]

 

for j in range(len(text1)):

    print text1[j]+"; "+text2[j]+"; "+text3[j]

 

关闭浏览器

driver.quit()

 

此文章是借鉴别人的,大概流程是如此(须要本身安装pip,python,自行下载浏览器驱动)

相关文章
相关标签/搜索