当前位置: 首页 > news >正文

惠州市网站制作公司商务网站策划书

惠州市网站制作公司,商务网站策划书,wordpress author 404,网站开发费用计入科目本篇是根据学习网站和网课结合自己做的学习笔记#xff0c;后续会一边学习一边补齐和整理笔记 非常推荐白月黑羽的学习网站#xff1a; 白月黑羽 (byhy.net) https://selenium-python.readthedocs.io/getting-started.html#simple-usage WEB UI自动化环境配置 (推荐靠谱…本篇是根据学习网站和网课结合自己做的学习笔记后续会一边学习一边补齐和整理笔记 非常推荐白月黑羽的学习网站 白月黑羽 (byhy.net) https://selenium-python.readthedocs.io/getting-started.html#simple-usage WEB UI自动化环境配置 (推荐靠谱的博客文章来进行环境配置,具体的我就不写了) 下载和安装 Python下载和安装 PyCharm安装 Selenium 库下载浏览器驱动程序 具体操作还得是看这两篇文章 Selenium web UI自动化测试简介与环境搭建_selenium webui-CSDN博客 PyCharm 搭建 Selenium Python 的自动化测试环境_pycharm自动化测试-CSDN博客 然后安装selenium的时候出现了安装不成功的问题那就参考这篇文章 安装selenium超级详细_selenium安装-CSDN博客 Chorme Driver安装链接在这非常全了 Chrome for Testing availability (googlechromelabs.github.io) Anaconda安装教程参考这篇很实用: Anaconda安装教程傻瓜教程_anaconda下没有usr目录-CSDN博客 遇到的问题及解决方法 下载的谷歌浏览器驱动版本和selenium版本一致但新版本selenium浏览器总是会退解决方法 在最后加个input()等待 选择元素的基本方法 find_element 和 find_elements 的区别 使用 find_elements 选择的是符合条件的 所有 元素 如果没有符合条件的元素 返回空列表 使用 find_element 选择的是符合条件的 第一个 元素 如果没有符合条件的元素 抛出 NoSuchElementException 异常 通过WebElement对象选择元素 WebDriver 对象 选择元素的范围是 整个 web页面 WebElement 对象 选择元素的范围是 该元素的内部 定位元素 eg拿测试百度网页来看 通过ID定位 在网页上通过 ID 定位一个元素通常是一个输入框然后向这个输入框中输入 Selenium最后打印出这个输入框的当前值。 # 1. By ID - 定位搜索输入框search_box_by_id WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, kw)))search_box_by_id.send_keys(Selenium)  # 在输入框中输入Seleniumprint(Located by ID:, search_box_by_id.get_attribute(value)) WebDriverWait(driver, 10): 这个部分表示对 driverSelenium 的浏览器控制对象进行最多 10秒 的等待时间。Selenium 中有隐式和显式等待此处使用的是显式等待即在指定时间内等待某个条件满足。 until(EC.presence_of_element_located((By.ID, kw))): until 方法的作用是在指定的条件被满足前一直等待或者直到超时。这里的条件是EC.presence_of_element_located它会等待页面上某个元素通过指定的定位方法如ID被找到并存在。(By.ID, kw) 表示通过 ID 属性定位页面上的元素ID 的值是 kw。这个ID通常用于唯一标识页面中的某个元素。 search_box_by_id.send_keys(Selenium): send_keys 方法用于在找到的输入框中模拟键盘输入。这里它向页面上的搜索框输入了 Selenium 这个字符串。 print(Located by ID:, search_box_by_id.get_attribute(value)): get_attribute(value) 是获取输入框当前的值。它会打印出输入框中已经填入的内容以确认 Selenium 已经正确输入。 按名称定位  通过 Name 或 ID 属性定位页面上的搜索按钮最终是通过 ID su 定位并模拟点击操作。 # 2. By Name - 定位搜索按钮# 定位搜索按钮名称为wd并点击按钮百度按钮的ID实际为su所以切换成用ID定位。search_button_by_name driver.find_element(By.NAME, wd)search_button_by_name driver.find_element(By.ID, su)  # 百度搜索按钮的ID为 susearch_button_by_name.click()print(Located by Name: 搜索按钮点击成功) search_button_by_name driver.find_element(By.NAME, wd): 尝试通过按钮的 Name 属性来定位搜索按钮。find_element(By.NAME, wd) 意思是寻找网页中 name 属性为 wd 的元素。但百度的搜索按钮并没有这个 name 属性因此这段代码应该是示例中的注释部分可能是最初的尝试。 search_button_by_name driver.find_element(By.ID, su): 由于百度的搜索按钮的实际ID为 su所以在这里使用 ID 来重新定位元素。find_element(By.ID, su) 表示通过元素的 ID即 su来找到这个元素。 search_button_by_name.click(): click() 方法用于模拟用户点击该按钮。这意味着一旦找到搜索按钮Selenium 将自动执行点击操作触发搜索功能。 按类名查找元素 输出该元素的 class 属性值以确认定位是否正确。 # 3. By Class Name - 定位搜索输入框的父级容器parent_div_by_class_name driver.find_element(By.CLASS_NAME, s_form)print(Located by Class Name:, parent_div_by_class_name.get_attribute(class)) Class Name 是 HTML 元素的一个属性用于标识多个元素共享的样式或功能因此使用 Class Name 可以选择某些具有相同特征的元素。 按标签名称定位元素  输出找到的链接数量方便确认是否正确定位了页面上的所有链接。 # 4. By Tag Name - 定位所有链接all_links_by_tag_name driver.find_elements(By.TAG_NAME, a)print(fLocated by Tag Name: 找到 {len(all_links_by_tag_name)} 个链接) all_links_by_tag_name driver.find_elements(By.TAG_NAME, a): 这行代码通过 TAG_NAME 定位页面中的所有 a 标签。find_elements(By.TAG_NAME, a) 方法会返回一个包含所有链接元素的列表每个链接都是由 a 标签定义的。这里的 find_elements 返回多个元素因此用 find_elements 而不是 find_element。即使页面上有多个 a 标签它也可以找到并返回所有的链接元素。 print(fLocated by Tag Name: 找到 {len(all_links_by_tag_name)} 个链接): len(all_links_by_tag_name) 获取 all_links_by_tag_name 列表的长度也就是找到的 a 标签的数量。使用 f-string 格式化输出信息将找到的链接数量插入到打印语句中向用户反馈已经定位到多少个链接。 通过 XPath 定位 通过 XPath 精确定位页面中的百度新闻链接确保链接的 href 和 class 属性满足指定条件。使用 显式等待 确保在指定的时间内等待元素的加载适应动态网页。 # 5.使用XPath来进行定位元素 定位新闻# CSSSelector中的href属性值需要使用引号包围news_link_by_xpath WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, //a[hrefhttp://news.baidu.com and classmnav c-font-normal c-color-t]))) WebDriverWait(driver, 20).until(...): WebDriverWait 是 Selenium 提供的显式等待方法用于等待某个条件成立。在这里我们告诉 Selenium 最多等待 20 秒直到元素被定位并可用为止。显式等待 是在特定条件下使用的它可以等待某个元素出现或某个状态完成适用于动态加载的页面。 EC.presence_of_element_located(...): EC 是 expected_conditions 的缩写。presence_of_element_located 表示等待某个元素在 DOM 中存在但不一定可见。这里通过 XPath 指定我们要寻找的元素。 By.XPATH 和 XPath 表达式: By.XPATH 指定使用 XPath 定位元素。XPath 是一种用于查找 XML 或 HTML 文档中特定元素的路径语言特别适合用于复杂结构或需要多条件筛选的情况。//a[hrefhttp://news.baidu.com and classmnav c-font-normal c-color-t] //a表示在整个页面中查找 a 标签链接元素。[hrefhttp://news.baidu.com]指定 href 属性值必须是 http://news.baidu.com也就是指向百度新闻的链接。[classmnav c-font-normal c-color-t]指定 class 属性必须为 mnav c-font-normal c-color-t确保只选择特定样式的链接。 通过链接文本查找超链接  通过部分链接文本定位包含“视频”一词的链接并打印出该链接的完整文本。适合用于无法预知链接的完整文本但知道部分文本的场景。 # 6. By Partial Link Text - 定位部分文本包含视频的链接video_link_by_partial_link_text driver.find_element(By.PARTIAL_LINK_TEXT, 视频)print(Located by Partial Link Text:, video_link_by_partial_link_text.text) driver.find_element(By.PARTIAL_LINK_TEXT, 视频): 这个方法使用 Partial Link Text 定位页面中的链接。By.PARTIAL_LINK_TEXT 允许通过部分链接文本进行定位而不要求完整匹配链接文本。这里寻找的是文本部分包含 “视频” 的链接a 标签。它只需要链接文本中含有 “视频” 这两个字就可以定位到对应的元素。find_element 方法返回页面中第一个匹配的元素对象。 video_link_by_partial_link_text.text: text 属性用于获取找到的链接元素的可见文本。在这个例子中video_link_by_partial_link_text.text 会返回链接的完整文本内容。 通过 CSS 选择器定位元素 # 7. By CSS Selector - 定位百度logologo_by_css_selector driver.find_element(By.CSS_SELECTOR, #lg img)print(Located by CSS Selector: 百度Logo已找到) driver.find_element(By.CSS_SELECTOR, #lg img): 这行代码通过 CSS Selector 定位元素使用的是 find_element 方法它会返回页面中第一个符合条件的元素。CSS Selector 是一种灵活且强大的方式允许我们通过 CSS 规则定位元素。它支持多种选择器类型包括 ID、类、标签、属性等。在这个例子中#lg img 表示选择 ID 为 lg 的元素下的 img 标签 #lg表示一个 ID 为 lg 的元素ID 选择器。表示选择其直接子元素。img表示一个 img 标签图像元素。结合起来这个选择器用于选择 ID 为 lg 的元素内的 img 元素通常是百度主页上的 Logo 图片。 总体代码如下 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC# 初始化 WebDriver service Service(executable_pathD:/Apython/chromedriver.exe) driver webdriver.Chrome(serviceservice)# 打开百度主页 driver.get(https://www.baidu.com)try:# 1. By ID - 定位搜索输入框search_box_by_id WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, kw)))search_box_by_id.send_keys(Selenium) # 在输入框中输入Seleniumprint(Located by ID:, search_box_by_id.get_attribute(value))# 2. By Name - 定位搜索按钮# 定位搜索按钮名称为wd并点击按钮百度按钮的ID实际为su所以切换成用ID定位。search_button_by_name driver.find_element(By.NAME, wd)search_button_by_name driver.find_element(By.ID, su) # 百度搜索按钮的ID为 susearch_button_by_name.click()print(Located by Name: 搜索按钮点击成功)# 3. By Class Name - 定位搜索输入框的父级容器parent_div_by_class_name driver.find_element(By.CLASS_NAME, s_form)print(Located by Class Name:, parent_div_by_class_name.get_attribute(class))# 4. By Tag Name - 定位所有链接all_links_by_tag_name driver.find_elements(By.TAG_NAME, a)print(fLocated by Tag Name: 找到 {len(all_links_by_tag_name)} 个链接)# 5.使用XPath来进行定位元素 定位新闻# CSSSelector中的href属性值需要使用引号包围news_link_by_xpath WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, //a[hrefhttp://news.baidu.com and classmnav c-font-normal c-color-t])))# 6. By Partial Link Text - 定位部分文本包含视频的链接video_link_by_partial_link_text driver.find_element(By.PARTIAL_LINK_TEXT, 视频)print(Located by Partial Link Text:, video_link_by_partial_link_text.text)# 7. By CSS Selector - 定位百度logologo_by_css_selector driver.find_element(By.CSS_SELECTOR, #lg img)print(Located by CSS Selector: 百度Logo已找到)# 8. By XPath - 定位搜索输入框search_box_by_xpath driver.find_element(By.XPATH, //input[idkw])search_box_by_xpath.clear() # 清空输入框内容search_box_by_xpath.send_keys(XPath 选择器) # 再次输入print(Located by XPath:, search_box_by_xpath.get_attribute(value))except Exception as e:print(An error occurred:, str(e))finally:# 关闭浏览器driver.quit()元素操作 清除文本输入框 clear(self) 点击元素 click(self) 提交表单 submit(self) 发送信息 send_keys(self, *value) WebElement 中常见的元素属性 获取元素属性 get_attribute(self, name) 判断元素可见 is_displayed(self) 判断元素可用 is_enabled(self) 判断元素是否被选中 is_selected(self) WebElement 中常见的属性方法 获取元素位置 location 获取元素大小 size 获取元素的文本 text 设计模式(封装) Pom模式关键字驱动模式 po模式:page object model 页面对象模式。 好处: 解决:线性脚本的问题 解决:代码不能重复利用的问题 解决:后期的维护问题 票子:看过他们的仓库?日用品放一起电器放一起文具放一起 ..分类 分三层 : 1.基础层:base 主要放selenium原生的方法, 2.页面对象层:po 主要用于放页面的元素和页面的动作。 3.测试用例层:testcase 存放测试用例以及测试数据, 页面对象层调用基础层的方法测试用例层调用页面对象层的方法。 浏览器导航操作 等待界面元素出现 等待页面加载完成 Selenium Webdriver 提供两种类型的waits - 隐式和显式。 显式等待会让WebDriver等待满足一定的条件以后再进一步的执行。 而隐式等待让Webdriver等待一定的时间后再才是查找某元素。 在我们进行网页操作的时候 有的元素内容不是可以立即出现的 可能会等待一段时间。 比如 我们的股票搜索示例页面 搜索一个股票名称 我们点击搜索后 浏览器需要把这个搜索请求发送给服务器 服务器进行处理后再把搜索结果返回给我们。 所以从点击搜索到得到结果需要一定的时间 只是通常 服务器的处理比较快我们感觉好像是立即出现了搜索结果。 搜索的每个结果 对应的界面元素 其ID 分别是数字 1 2 3 4 。。。 我们可以先用如下代码 将 第一个搜索结果里面的文本内容 打印出来 为什么呢 因为我们的代码执行的速度比 网站响应的速度 快。 网站还没有来得及 返回搜索结果我们就执行了如下代码 element wd.find_element(By.ID, 1)在那短暂的瞬间 网页上是没有用 id为1的元素的 因为还没有搜索结果呢。自然就会报告错误 id为1 的元素不存在了。 那么怎么解决这个问题呢 from selenium import webdriver from selenium.webdriver.common.by import By# 创建 WebDriver 对象 wd webdriver.Chrome()后续所有的 find_element 或者 find_elements 之类的方法调用 都会采用上面的策略 如果找不到元素 每隔 半秒钟 再去界面上查看一次 直到找到该元素 或者 过了10秒 最大时长# 隐式等待 以后创建 WebDriver 对象之后都要条件反射的加上这个隐式等待 wd.implicitly_wait(10)try:# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址wd.get(https://www.byhy.net/cdn2/files/selenium/stock1.html)# 根据id选择元素返回的就是该元素对应的WebElement对象element wd.find_element(By.ID, kw)# 通过该 WebElement对象就可以对页面元素进行操作了# 比如输入字符串到 这个 输入框里element.send_keys(通讯\n)# 等待用户输入以便观察当前页面状态input(按下任意键继续...)element wd.find_element(By.ID,go)element.click()#让这个代码执行不要那么块 网站响应的速度相对较慢# import time#问题是这里设置多长时间合适呢解决方法当发现元素没有找到的时候并不立即返回 找不到的 元素的错误而是周期每隔半秒重新寻找元素 直到元素找到或者超出指定最大等待时长这时才 抛出异常如果是 find_elements 之类的方法 则是返回空列表。# while True:# try:# # 网站还没有来得及 返回搜索结果我们就执行了如下代码# element wd.find_element(By.ID, 1)# print(element.text)# break# except:# time.sleep(1)但这样会出现死循环这里要用implicitly_wait 隐式等待 或者 全局等待 。该方法接受一个参数用来指定 最大等待 时长element wd.find_element(By.ID, 1)print(element.text)finally:# 关闭浏览器wd.quit()显式等待 在代码中定义等待一定条件发生后再进一步执行代码。 最糟糕的案例是使用time.sleep()它将条件设置为等待一个确切的时间段。 这里有一些方便的方法让你只等待需要的时间。WebDriverWait结合ExpectedCondition 是实现的一种方式。 隐式等待 如果某些元素不是立即可用的隐式等待是告诉WebDriver去等待一定的时间后去查找元素。 默认等待时间是0秒一旦设置该值隐式等待是设置该WebDriver的实例的生命周期。 eg拿百度首页先在输入框输入Selenium之后等待一会儿在跳转视频模块进行举例 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 import time# 自定义等待类等待元素具有特定的CSS类 class element_has_css_class(object):def __init__(self, locator, css_class):self.locator locatorself.css_class css_classdef __call__(self, driver):element driver.find_element(*self.locator)if self.css_class in element.get_attribute(class):return elementelse:return False# 初始化Chrome WebDriver driver webdriver.Chrome()try:# 访问百度首页driver.get(https://www.baidu.com)# 等待百度首页的搜索框加载并可点击search_box WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, kw)))print(搜索框已加载并可点击)# 在搜索框中输入关键词并提交search_box.send_keys(Selenium)search_box.submit()# 等待搜索结果页面加载并等待搜索结果元素加载完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, content_left)))print(搜索结果页面已加载)# 通过CSS类检查搜索按钮是否加载完成并可点击# 使用自定的element_has_css_class 等待搜素按钮具备特定的CSS类 确保样式正确search_button WebDriverWait(driver, 10).until(element_has_css_class((By.ID, su), bg s_btn))print(搜索按钮具备指定的CSS类)# 点击“新闻”链接使用CSS Selector定位news_link WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT,视频)))news_link.click()print(已点击视频链接)# 等待新闻页面加载完成WebDriverWait(driver, 10).until(EC.title_contains(百度新闻))print(百度新闻页面已加载)# 等待某个新闻板块可见news_section WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, .news-nav-item)))print(新闻板块已加载)# 进一步操作如点击具体的新闻标题等finally:# 等待几秒后关闭浏览器time.sleep(20)driver.quit()eg获取百度页面的 title 和 URL并使用句柄方式切换窗口的例子 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By import time# 创建一个 WebDriver 实例 driver webdriver.Chrome()# 打开百度首页 driver.get(http://www.baidu.com)# 获取当前窗口的句柄 current_window_handle driver.current_window_handle# 获取当前窗口的 title 和 URL print(当前窗口的 title:, driver.title) print(当前窗口的 URL:, driver.current_url)# 点击百度首页上的 新闻 链接打开一个新窗口 driver.find_element(By.LINK_TEXT, 新闻).click()# 等待 2 秒确保新窗口已经打开 time.sleep(2)# 获取所有窗口的句柄 all_window_handles driver.window_handles# 遍历所有窗口的句柄 for window_handle in all_window_handles:# 如果当前窗口的句柄不是第一个窗口的句柄if window_handle ! current_window_handle:# 切换到当前窗口driver.switch_to.window(window_handle)# 获取当前窗口的 title 和 URLprint(当前窗口的 title:, driver.title)print(当前窗口的 URL:, driver.current_url)# 关闭所有窗口 driver.quit()页面对象 一个页面对象表示在你测试的WEB应用程序的用户界面上的区域。 使用页面对象模式的好处: 创建可复用的代码以便于在多个测试用例间共享减少重复的代码量如果用户界面变化只需要修改一处 项目目录结构 pythonProject/ ├── po/ │ ├── __init__.py # 初始化文件 │ ├── element.py # 页面元素封装 │ └── page.py # 页面对象类定义 │ ├── tests/ │ ├── __init__.py # 初始化文件 │ └── test_search.py # 测试用例 └── requirements.txt # 依赖文件 eg1要自动化测试 Python 官方网站的搜索功能。具体步骤如下 打开 Python 官网。 输入搜索关键字例如 pycon。 点击搜索按钮。 验证搜索结果页面是否正确加载。 页面元素 po/element.py 中定义页面元素封装类 # 页面元素封装 包含基本的操作方法 例如查找元素、点击、发送文本等。 # 定位元素 from selenium.webdriver.common.by import By # 处理页面加载时间不确定的情况确保在操作元素之前它已经存在或可见。 from selenium.webdriver.support.ui import WebDriverWait # expected_conditions (EC): 一个预定义的条件集可以结合 WebDriverWait 使用。 # 例如等待某个元素出现、可点击、页面标题包含某些内容等。 from selenium.webdriver.support import expected_conditions as EC# 封装了对页面元素的基本操作 查找 点击和输入文本 class BaseElement:def __init__(self, driver, by, value):# 与浏览器的交互self.driver driver# 元素的定位方式self.by by# 元素的定位值self.value valuedef find_element(self):# 等待最多10秒钟直到满足条件。如果 10# 秒内条件未满足会抛出超时异常。return WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((self.by, self.value)))# 通过find_element方法找到元素然后执行点击操作。def click(self):self.find_element().click()# 向页面上的输入框元素发送文本例如输入搜索关键词def send_keys(self, text):# 先通过find_element方法找到元素然后将文本text输入到该元素中。self.find_element().send_keys(text) 页面对象类 po/page.py 中创建页面对象类 # 页面对象类定义 代表 Python 官网的首页以及搜索结果页面。 from po.element import BaseElement from selenium.webdriver.common.by import By# 封装了主页上的操作输入搜索关键词和点击搜索按钮。 class PythonOrgHomePage:def __init__(self, driver):self.driver driver# search_box和go_button:这两个是定位器用于定位主页上的搜索框和搜索按钮。# BaseElement类封装了元素的查找和操作逻辑By.NAME, q和By.ID, submit指定了如何定位这些元素。self.search_box BaseElement(driver, By.NAME, q)self.go_button BaseElement(driver, By.ID, submit)# 用于在搜索框中输入搜索词。 term: 要输入的搜索关键词。def enter_search_term(self, term):self.search_box.send_keys(term)# term: 要输入的搜索关键词。找到搜索按钮并执行点击操作。def click_go_button(self):self.go_button.click()# 封装了搜索结果页面的验证逻辑。通过检查页面标题它可以确定搜索是否成功。 class SearchResultsPage:def __init__(self, driver):self.driver driverdef is_result_found(self):print(Current page title:, self.driver.title)return Search Python.org in self.driver.title 测试用例 tests/test_search.py 中编写测试用例 # 测试用例 import unittest from selenium import webdriver from po.page import PythonOrgHomePage, SearchResultsPageclass PythonOrgSearchTest(unittest.TestCase):# 在每个测试用例执行之前调用用于初始化测试环境。def setUp(self):self.driver webdriver.Chrome() # 使用 Chrome 浏览器self.driver.get(https://www.python.org)def test_search_in_python_org(self):# 创建一个 PythonOrgHomePage实例封装了主页上的操作。home_page PythonOrgHomePage(self.driver)# 在搜索框中输入pyconhome_page.enter_search_term(pycon)# 点击搜索按钮home_page.click_go_button()# 封装了搜索结果页面的操作。search_results_page SearchResultsPage(self.driver)self.assertTrue(search_results_page.is_result_found())# 每个测试用例执行之后调用用于清理测试环境。def tearDown(self):self.driver.quit()if __name__ __main__:unittest.main()eg2使用 Selenium WebDriver 和 unittest 框架测试百度搜索功能 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ECclass BaiduHomePage:def __init__(self, driver):self.driver driver# 元组用于指定搜索框和搜索按钮的定位方式ID。self.search_box (By.ID, kw)self.search_button (By.ID, su)# 在搜索框中输入搜索词# 等待搜索框出现# 超时时间为10s# 向搜索框中输入搜索词def enter_search_term(self, term):WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(self.search_box)).send_keys(term)# 点击搜索按钮# 等待搜索按钮可点击超时时间为 10 秒# 等待条件元素可点击# 点击搜索按钮def click_search_button(self):WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable(self.search_button)).click()class BaiduSearchResultsPage:def __init__(self, driver):self.driver driver# 用于检查搜索结果页面是否正确加载def is_result_found(self):return 百度一下你就知道 in self.driver.titletest_baidu_search.py测试用例 import unittest from selenium import webdriver from page import BaiduHomePage, BaiduSearchResultsPageclass TestBaiduSearch(unittest.TestCase):# 在每个测试用例执行前执行一次用于初始化测试环境。def setUp(self):self.driver webdriver.Chrome()self.driver.get(https://www.baidu.com)def test_baidu_search(self):home_page BaiduHomePage(self.driver)home_page.enter_search_term(Python)home_page.click_search_button()search_results_page BaiduSearchResultsPage(self.driver)self.assertTrue(search_results_page.is_result_found())def tearDown(self):self.driver.quit()if __name__ __main__:unittest.main()
http://www.dnsts.com.cn/news/108524.html

相关文章:

  • 域名注册的网站天空建筑网站
  • 河北建设厅网站开通账号兰溪市建设局网站
  • 论坛门户网站建设运营费用百度推广图片尺寸要求
  • 建设网站的模板专业网站建站费用
  • 网站建设制作费用怎么样做网站页面
  • 企业网站申请流程游戏开发工具
  • 南昌企业网站建设哪家好WordPress哔哩哔哩主题
  • 低成本做网站 白之家一个网站可以做多少弹窗广告
  • c 多语言网站怎么做好三网网站
  • 网站备案域名还是空间手游传奇新开服网站
  • 郑州做手机网站建设网站建设画册设计
  • 网站图标在哪里做修改上海外贸网站制作公司
  • 做网站的公司为什么人少了wordpress 分享 网站
  • 东莞哪家公司做网站好男女做暖暖的试看网站酥酥影视
  • 过期网站.wordpress 假用户插件
  • 做网站模板赚钱本地门户网站
  • 网站空间做邮箱全网关键词搜索排行
  • 百度云盘搜索引擎入口江门seo全网营销
  • 手机网站广告代码网站建设公司介绍ppt
  • 网站制作过程流程网站建设方案图
  • 如何做网站短链接微信网站多少钱
  • wordpress网站数据做个企业网站 优帮云
  • 北京建设网站制作机械做卖产品网站
  • 已被网站管理员设置拦截平面设计软件学哪个比较好
  • 免费咨询图片大全大图福州短视频seo方法
  • 柒零叁网站建设品牌公司网站设计
  • 怎么做赌钱网站代理微信小程序app下载
  • 网站怎样做关键词优化关键词优化方法
  • 布吉网站建设哪家公司便宜点用dw如何做网站首页
  • 电子商务网站建设的发展趋势wordpress添加分类图片尺寸