java自动化测试,selenium框架的基本使用
自动化测试的介绍
自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。
自动化测试包括 UI自动化 ,接口自动化 ,单元测试自动化 。
selenium的环境搭建
下载谷歌或者dege的对应版本驱动(以谷歌为例)
找到谷歌的对应版本。
链接: link
引入selenium和testng的依赖
进入maven中央仓库 链接: link
搜索selenium和testng把依赖引入pom文件中
selenium:
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
testng:
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<scope>test</scope>
</dependency>
注:可能会因为jdk版本不同而导致后续运行出现版本冲突异常。
配置driver文件
把之前下载的driver.exe文件放入src包下新建的drivers中。
到此环境已经配置和准备工作完成,可以进行自动化测试。
selenium的基本使用
打开浏览器,访问百度
出现百度并且终端出现:
说明成功。
优化:使用@BeforeClass对代码优化,方便后续测试。
定位元素
f12进入开发者模式
使用id定位
使用name,className定位
使用xpath定位
Actions()对象的鼠标操作方法
窗口操作
隐式等待
显示等待
常用方法
方法分类 | 具体方法 | 描述 | 示例 |
---|---|---|---|
浏览器操作 | driver.get(url) | 打开指定的 URL 网页。 | driver.get('https://www.example.com') |
driver.quit() | 关闭浏览器并退出驱动程序。 | 在测试结束后使用。 | |
driver.close() | 关闭当前窗口。 | 如果有多个窗口,只会关闭当前窗口。 | |
页面元素定位 | find_element_by_id(id_value) | 通过元素的 ID 属性值定位单个元素。 | element = driver.find_element_by_id('my_element_id') |
find_element_by_name(name_value) | 通过元素的 name 属性值定位单个元素。 | ||
find_element_by_class_name(class_value) | 通过元素的 class 属性值定位单个元素。 | ||
find_element_by_tag_name(tag_name) | 通过元素的标签名定位单个元素。 | ||
find_element_by_css_selector(css_selector) | 通过 CSS 选择器定位单个元素。 | element = driver.find_element_by_css_selector('.my-class #my-id') | |
find_element_by_xpath(xpath_expression) | 通过 XPath 表达式定位单个元素。 | element = driver.find_element_by_xpath('//div[@id="my-id"]') | |
元素操作 | element.click() | 点击元素。 | 找到按钮元素后进行点击操作。 |
element.send_keys(value) | 向输入框元素发送文本。 | 在搜索框元素上输入搜索关键词。 | |
element.clear() | 清除输入框中的文本。 | 重新输入内容时使用。 | |
element.get_attribute(attribute_name) | 获取元素的特定属性值。 | 获取链接元素的 href 属性值。 | |
element.text | 获取元素的文本内容。 | 获取标签之间的文本信息。 | |
等待方法 | WebDriverWait(driver, timeout).until(expected_condition) | 显式等待,等待特定条件满足。 | 等待某个元素可见:WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'my-element-id'))) 。 |
implicitly_wait(time_to_wait) | 隐式等待,在一定时间内等待页面上的所有元素加载完成。 | driver.implicitly_wait(10) ,设置等待时间为 10 秒。 | |
窗口和标签页操作 | driver.current_window_handle | 获取当前窗口的句柄。 | |
driver.window_handles | 获取所有打开的窗口句柄列表。 | ||
driver.switch_to.window(window_handle) | 切换到指定的窗口。 | 根据窗口句柄进行切换。 | |
driver.switch_to.frame(frame_reference) | 切换到特定的 iframe。 | 可以通过 iframe 的名称、ID 或者直接传入 iframe 元素进行切换。 | |
其他有用方法 | driver.execute_script(script, *args) | 执行 JavaScript 代码。 | 可用于滚动页面、修改元素属性等操作。 |
driver.get_cookies() | 获取当前页面的 cookies。 | ||
driver.add_cookie(cookie_dict) | 添加一个 cookie 到当前会话。 |