ChatGPT与Selenium

1885 篇文章 51 订阅
659 篇文章 1 订阅

第一步,简单交流

输入:请使用selenium书写百度查询的测试代码。

输出:

——————————————————————————————

好的,以下是使用Python和Selenium进行百度搜索的测试代码示例:

from selenium import webdriver
# 创建一个Chrome
WebDriver
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com")
# 在搜索框中输入关键字
search_box =
driver.find_element_by_name("wd")
search_box.send_keys("Selenium")
# 点击搜索按钮
search_box.submit()
# 检查搜索结果是否包含期待的关键字
assert "Selenium" in driver.title
# 关闭浏览器
driver.quit()

该代码模拟了在百度首页中搜索关键字"Selenium"并检查结果页面是否包含该关键字。您可以将其作为参考,根据自己的需求进行修改。

——————————————————————————————

解析:

运行

使用driver.find_element(By.NAME,"wd")函数改写代码。

from selenium import webdriver
from selenium.webdriver.common.by import
By
# 创建一个Chrome WebDriver
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com")
# 在搜索框中输入关键字
search_box =
driver.find_element(By.NAME,"wd")
search_box.send_keys("Selenium")
# 点击搜索按钮
search_box.submit()
# 检查搜索结果是否包含期待的关键字
assert "Selenium" in driver.title
# 关闭浏览器
driver.quit()

使用显示等待改写

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait
import WebDriverWait
# 创建一个Chrome
WebDriver
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com")
# 在搜索框中输入关键字
search_box =
driver.find_element(By.NAME,"wd")
search_box.send_keys("Selenium")
# 点击搜索按钮
search_box.submit()
WebDriverWait(driver, 20).until(lambda
driver:driver.title.startswith("Selenium"))
# 检查搜索结果是否包含期待的关键字
assert "Selenium" in driver.title
# 关闭浏览器
driver.quit()

第二步,告知selenium版本

提示:请使用selenium4.8.3版本书写百度查询的测试代码

输出:

好的,以下是使用Selenium 4.0.0版本实现在百度搜索框中输入关键词并点击搜索的Python代码示例:

from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import
Keys
from selenium.webdriver.chrome.service
import Service
# 设置Chrome浏览器启动路径
chrome_path = '/usr/local/bin/chromedriver'
# 创建Chrome浏览器服务
service = Service(executable_path=chrome_path)
# 启动浏览器
browser = Chrome(service=service)
# 打开百度首页
browser.get("https://www.baidu.com/")
# 找到搜索框,输入关键词并按回车键
search_input =
browser.find_element(By.NAME, 'wd')
search_input.send_keys('Selenium')
search_input.send_keys(Keys.ENTER)
# 关闭浏览器
browser.quit()

该代码假设你已经安装了Selenium 4.0.0,Chrome webdriver也已经下载并安装到指定的目录下。你需要根据自己的实际情况修改chrome_path变量的值来指定Chrome webdriver的路径。

改写chrome_path = '/usr/local/bin/chromedriver'为chrome_path = 'C:\\Lib\\chromedriver.exe'

运行,直接通过。

第三步,告知测试框架unittest

提示:请使用selenium4.8.3版本+unittest框架书写百度查询的测试代码。

输出:

好的,以下是使用Selenium 4.0.0版本和unittest框架实现在百度搜索框中输入关键词并点击搜索的Python代码示例:

import unittest
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import
Keys
from selenium.webdriver.chrome.service
import Service
class TestBaiduSearch(unittest.TestCase):
def setUp(self):
# 设置Chrome浏览器启动路径
chrome_path = '/usr/local/bin/chromedriver'
# 创建Chrome浏览器服务
self.service = Service(executable_path=chrome_path)
# 启动浏览器
self.browser = Chrome(service=self.service)
def test_baidu_search(self):
# 打开百度首页
self.browser.get('https://www.baidu.com')
# 找到搜索框,输入关键词并按回车键
search_input = self.browser.find_element(By.NAME, 'wd')
search_input.send_keys('Selenium')
search_input.send_keys(Keys.ENTER)
# 等待页面加载完成
self.browser.implicitly_wait(10)
# 断言搜索结果页面标题是否包含“Selenium”
self.assertIn('Selenium', self.browser.title)
def tearDown(self):
# 关闭浏览器
self.browser.quit()
if __name__ == '__main__':

unittest.main()

该代码假设你已经安装了Selenium 4.0.0,Chrome webdriver也已经下载并安装到指定的目录下。你需要根据实际情况修改chrome_path变量的值来指定Chrome webdriver的路径。在运行代码前,请确保你已经安装了unittest框架,并运行该脚本即可执行测试。

改写chrome_path = '/usr/local/bin/chromedriver'为chrome_path = 'C:\\Lib\\chromedriver.exe'

运行,

改写self.browser.implicitly_wait(10)为显示断言​​​​​​​

import unittest
from selenium.webdriver import Chrome
from selenium.webdriver.com
mon.by import By
from selenium.webdriver.common.keys import
Keys
from selenium.webdriver.chrome.service
import Service
from selenium.webdriver.support.wait
import WebDriverWait
class TestBaiduSearch(unittest.TestCase):
def setUp(self):
# 设置Chrome浏览器启动路径
chrome_path = 'C:\\Lib\\chromedriver.exe'
# 创建Chrome浏览器服务
self.service = Service(executable_path=chrome_path)
# 启动浏览器
self.browser = Chrome(service=self.service)
def test_baidu_search(self):
# 打开百度首页
self.browser.get('https://www.baidu.com')
# 找到搜索框,输入关键词并按回车键
search_input = self.browser.find_element(By.NAME, 'wd')
search_input.send_keys('Selenium')
    search_input.send_keys(Keys.ENTER)
# 等待页面加载完成
WebDriverWait(self.browser, 20).until(lambda driver:
self.browser.title.startswith('Selenium'))
# 断言搜索结果页面标题是否包含“Selenium”
self.assertIn('Selenium', self.browser.title)
def tearDown(self):
# 关闭浏览器
self.browser.quit()
if __name__ == '__main__':

unittest.main()

第四步,告知测试中使用显示等待

提示:请使用selenium4.8.3版本+unittest框架书写百度查询的测试代码。代码中使用显示等待。

输出:

好的,以下是使用Selenium 4.0.0版本和unittest框架以及显示等待实现在百度搜索框中输入关键词并点击搜索的Python代码示例:

import unittest
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import
Keys
from selenium.webdriver.chrome.service
import Service
from selenium.webdriver.support.ui import
WebDriverWait
from selenium.webdriver.support import
expected_conditions as EC
class TestBaiduSearch(unittest.TestCase):
def setUp(self):
# 设置Chrome浏览器启动路径
chrome_path = '/usr/local/bin/chromedriver'
# 创建Chrome浏览器服务
self.service = Service(executable_path=chrome_path)
# 启动浏览器
self.browser = Chrome(service=self.service)
def test_baidu_search(self):
# 打开百度首页
self.browser.get('https://www.baidu.com')
# 找到搜索框,输入关键词并按回车键
search_input = self.browser.find_element(By.NAME, 'wd')
search_input.send_keys('Selenium')
search_input.send_keys(Keys.ENTER)
# 等待搜索结果页面加载完成
WebDriverWait(self.browser, 10).until(EC.title_contains('Selenium'))
# 断言搜索结果页面标题是否包含“Selenium”
self.assertIn('Selenium', self.browser.title)
def tearDown(self):
# 关闭浏览器
self.browser.quit()
if __name__ == '__main__':

unittest.main()

该代码假设你已经安装了Selenium 4.0.0,Chrome webdriver也已经下载并安装到指定的目录下。你需要根据实际情况修改chrome_path变量的值来指定Chrome webdriver的路径。在运行代码前,请确保你已经安装了unittest框架,并运行该脚本即可执行测试。在代码中,我们使用了显示等待函数WebDriverWait和expected_conditions模块来等待搜索结果页面加载完成。

竟然不该chrome_path = '/usr/local/bin/chromedriver',测试马上通过。困惑

第五步,告知测试框架pytest,并且可以用allure显示。

提示:请使用selenium4.8.3版本+pytest框架书写百度查询的测试代码。代码中使用显示等待。并且支持allure报表

输出:

——————————————————————————————

好的,以下是使用Selenium 4.0.0版本和pytest框架以及显示等待和allure报表实现在百度搜索框中输入关键词并点击搜索的Python代码示例:

import pytest
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import
Keys
from selenium.webdriver.chrome.service
import Service
from selenium.webdriver.support.ui import
WebDriverWait
from selenium.webdriver.support import
expected_conditions as EC
import allure
@allure.feature("百度搜索测试")
class TestBaiduSearch:
def setup_class(self):
# 设置Chrome浏览器启动路径
chrome_path = '/usr/local/bin/chromedriver'
# 创建Chrome浏览器服务
self.service = Service(executable_path=chrome_path)
# 启动浏览器
self.browser = Chrome(service=self.service)
def teardown_class(self):
# 关闭浏览器
self.browser.quit()
@allure.story("搜索Selenium")
@pytest.mark.parametrize("keyword", ["Selenium"])
def test_baidu_search(self, keyword):
# 打开百度首页
self.browser.get('https://www.baidu.com')
# 找到搜索框,输入关键词并按回车键
search_input = self.browser.find_element(By.NAME, 'wd')
search_input.send_keys(keyword)
search_input.send_keys(Keys.ENTER)
# 等待搜索结果页面加载完成
WebDriverWait(self.browser, 10).until(EC.title_contains(keyword))
# 断言搜索结果页面标题是否包含关键词
assert keyword in self.browser.title
if __name__ == '__main__':

pytest.main(['-s', '-v', '--alluredir', 'allure-results'])

该代码假设你已经安装了Selenium 4.0.0,Chrome webdriver也已经下载并安装到指定的目录下。在运行代码前,请确保你已经安装了pytest、pytest-allure和allure框架,并执行pytest.main函数即可自动生成并打开allure报表。在代码中,我们使用了pytest框架的装饰器来使用allure报表,使用了pytest.mark.parametrize装饰器来传入参数化数据,使用了显示等待函数WebDriverWait和expected_conditions模块来等待搜索结果页面加载完成。

运行:

C:\Users\xiang\Desktop>pytest -sv -q
test.py --alluredir ./report/xml
================== test session starts
==================
platform win32 -- Python 3.11.3,
pytest-7.3.1, pluggy-1.0.0
rootdir: C:\Users\xiang\Desktop
plugins: allure-pytest-2.13.1,
asyncio-0.21.0, base-url-2.0.0, forked-1.6.0, html-2.0.1, metadata-2.0.4,
ordering-0.6, playwright-0.3.2, rerunfailures-11.1.2, xdist-3.2.1
asyncio: mode=Mode.STRICT
collected 1 item
test.py
DevTools listening on
ws://127.0.0.1:60078/devtools/browser/cf89ed0a-3772-4627-a2e4-789b6f0cc71d
.
================== 1 passed in 7.35s
==================
C:\Users\xiang\Desktop>allure serve
.\report\xml\
Generating report to temp directory...
Report successfully generated to
C:\Users\xiang\AppData\Local\Temp\14817476411006266871\allure-report
Starting web server...
2023-06-12 16:33:29.148:INFO::main: Logging
initialized @2133ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://169.254.219.26:60228/>.
Press <Ctrl+C> to exit

第六步,查询unit是否支持allure。

提示:unittest可以使用allure吗

输出:可以的,虽然allure是由pytest框架发起的开源测试报告框架,但是allure的report和pytest嵌入到了unittest框架里面,通过一些途径也是可以使用的。其中,需要依赖allure-python-commons和allure-python-commons两个库来生成allure报表。

使用allure和unittest可以将测试结果更加友好清晰地展示,包括用例标题、测试步骤、测试数据、测试结果、异常信息、截图等。同时还有“统计面板”和“测试历史记录”等功能增强体验,详见allure官网。

以下是一个使用unittest和allure结合的示例代码:

import unittest
import allure
@allure.feature("数值比较")
class TestNumber(unittest.TestCase):
@allure.story("测试递增序列")
def test_increase(self):
numbers = [1, 2, 3, 4]
for i in range(len(numbers) - 1):
with allure.step("校验 {} 是否小于 {}".format(numbers[i], numbers[i+1])):
self.assertLess(numbers[i], numbers[i+1])
@allure.story("测试递减序列")
def test_decrease(self):
numbers = [4, 3, 2, 1]
for i in range(len(numbers) - 1):
with allure.step("校验 {} 是否大于 {}".format(numbers[i], numbers[i+1])):
self.assertGreater(numbers[i],
numbers[i+1])
if __name__ == "__main__":
#生成 allure 报告需要的数据存在allure-report 目录下

unittest.main(testRunner=xmlrunner.XMLTestRunner(output="test_reports"))

在该代码中,我们使用了allure的装饰器@allure.feature和@allure.story来定义测试报告的功能和故事,使用了with allure.step()代码块来标识测试用例的步骤。最后,在运行测试时,我们需要定义一个输出目录来存储报告数据,代码中采用的是使用xmlrunner模块来将结果转换成XML格式文件,然后再使用allure-cli生成测试报告。

注意,需要安装allure-python-commons和allure-python-commons这两个库。可以使用以下命令来安装:

pip install allure-pytest allure-python-commons

运行测试后,将生成一个名为test_reports的目录,包含多个XML格式的文件,这些文件可以被allure-cli生成并展示到浏览器中,例如:

allure serve test_reports

然后在浏览器中打开http://localhost:5050即可看到测试报告。

第七步,错误的提示。

提示:请使用C语言的selenium框架书写百度查询的测试代码。

输出:

很抱歉,Selenium本身是基于Java编写的UI自动化测试框架,不支持C语言。Selenium的C#、Python、Ruby、JavaScript、Perl、PHP等语言版本都是通过开发者们基于Java版本封装而来的。如果您有C语言的自动化测试需求,推荐您使用其他框架和工具实现。

第八步,要求用POM格式来完成。

提示:请使用selenium4.8.3版本+pytest框架书写百度查询的测试代码。代码中使用显示等待和POM技巧。并且支持allure报表。

输出:

————————————————————————————————

好的,我会尽快完成。在开始之前,请确认你已经安装了以下库:

  • selenium 4.1.0

  • pytest 6.2.5

  • allure-pytest 2.9.45

代码如下:​​​​​​​

import allure
import pytest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class BaiduSearchPage:
"""百度搜索页面"""
 input_box =
(By.CSS_SELECTOR, "#kw")
 search_button =
(By.CSS_SELECTOR, "#su")

def __init__(self,
driver):
self.driver = driver

def input_keyword(self,
keyword):
self.driver.find_element(*self.input_box).send_keys(keyword)

def
click_search_button(self):
self.driver.find_element(*self.search_button).click()
class TestBaiduSearch:
"""测试百度搜索功能"""

 @allure.epic("百度搜索")
 @allure.feature("基础功能")
 @allure.story("搜索")
 @allure.title("验证搜索功能")
@pytest.mark.parametrize("keyword", ["pytest",
"selenium", "allure"])
def test_search(self,
driver, keyword):
# 访问百度首页
driver.get("https://www.baidu.com/")

# 实例化页面对象
 search_page =
BaiduSearchPage(driver)

# 输入搜索关键词
search_page.input_keyword(keyword)

# 点击搜索按钮
 search_page.click_search_button()

# 显示等待搜索结果页面加载完成
 WebDriverWait(driver,
10).until(
EC.presence_of_element_located((By.CSS_SELECTOR,
"#content_left"))
 )

# 验证搜索结果页面标题包含搜索关键词

assert keyword in driver.title

如上所述,这个脚本包括了以下主要组件:

  1. 1.      BaiduSearchPage:一个页面对象模式类,封装了页面元素和操作方法。

  2. 2.      TestBaiduSearch:测试用例类,使用了fixture来实例化webdriver并传递给测试用例。

  3. 3.      pytest.parametrized:使用了 pytest.parametrize() 装饰器来运行多个关键词的测试。

此外,还使用了以下 pytest 和 allure 的装饰器:

  • pytest.mark.parametrize:参数化测试用例

  • allure.epic:定义测试中的 “epic” 级别标签

  • allure.feature:申明被测系统的一个功能

  • allure.story:给定测试用例的一个故事

  • allure.title:为测试用例定义一个标题,使其更易于阅读和理解

你可以运行命令时添加 -v 和 -s 参数获取更详细的测试信息。在执行测试后,你可以使用 allure 来生成漂亮的报告,命令如下:

pytest --alluredir=./result
allure serve ./result

第九步,要求PHP来写。

提示:请使用selenium4.8.3版本+PHP 5.6.28语言书写百度查询的测试代码。

输出:

好的,以下是一个使用Selenium 4.0.0版本和PHP 5.6.28语言,实现在百度搜索框中输入关键词并点击搜索的测试代码示例。代码中使用显示等待函数进行等待。​​​​​​​

<?php
require_once('vendor/autoload.php');
use Facebook\WebDriver\Remote\RemoteWebDriver;
use
Facebook\WebDriver\Remote\WebDriverCapabilityType;
use
Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;
class BaiduSearchTest extends
PHPUnit_Framework_TestCase
{
/**
   * @var RemoteWebDriver
*/
protected $webDriver;
public static function setUpBeforeClass()
{
// 设置Chrome浏览器启动路径
putenv('webdriver.chrome.driver=/usr/local/bin/chromedriver');
 }
protected function setUp()
{
// 创建ChromeDriver设置
$options = new \Facebook\WebDriver\Chrome\ChromeOptions();
$options->addArguments([
'--disable-dev-shm-usage',
'--no-sandbox',
'--disable-gpu',
]);
// 创建ChromeDriver实例
$capabilities = [
WebDriverCapabilityType::BROWSER_NAME => 'chrome',
WebDriverCapabilityType::PLATFORM => 'Linux',
'goog:chromeOptions' => $options->toArray(),
];
$this->webDriver = RemoteWebDriver::create(
'http://localhost:4444/wd/hub',
$capabilities
);
 }
protected function tearDown()
{
// 关闭浏览器
$this->webDriver->quit();
 }
public function testSearch()
{
// 打开百度首页
$this->webDriver->get('https://www.baidu.com');
// 找到搜索框,输入关键词并按回车键
$searchInput =
$this->webDriver->findElement(WebDriverBy::id('kw'));
$searchInput->sendKeys('Selenium');
$searchInput->submit();
// 等待搜索结果页面加载完成
$webDriverWait = new \Facebook\WebDriver\WebDriverWait(
$this->webDriver,
10,
1000
);
$webDriverWait->until(
WebDriverExpectedCondition::titleContains('Selenium')
);
// 断言搜索结果页面标题是否包含"Selenium"
$this->assertContains(
'Selenium',
$this->webDriver->getTitle()
);
 }
}

在这个例子中,我们使用了PHPUnit测试框架、PHP 5.6.28语言和Selenium 4.0.0版本。代码使用Chrome浏览器作为测试浏览器,使用了显示等待函数来等待搜索结果页面加载完成。在执行测试时,测试框架会自动启动一个Chrome浏览器(具体的路径需要根据你的实际情况来设置),打开百度首页,输入关键词并提交搜索,再等待搜索结果页面加载完成后,断言搜索结果页面标题中是否包含"Selenium"。

我们还需要使用Composer来安装PHPUnit和Selenium框架:

composer require phpunit/phpunit

composer  require php-webdriver/webdriver

此外,还需要下载Chrome浏览器驱动chromedriver,然后启动Selenium Server(可以通过java -jar selenium-server-standalone.jar命令启动)。

最后,在终端中执行phpunit命令即可运行测试。

总结:

使用ChatGPT可以很有效的辅助IT工作

需要在理解IT基础的前提下使用ChatGPT,比如你知道Selenium的显示等待就获取不到最好Selenium代码。

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​​​​​

全部资料获取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值