Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫

Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫
 
 
 
测试人员的最佳 11 种开源自动化Selenium
1) Robot Framework
Robot Framework是一个开源自动化系统,它使用关键字驱动的方法进行验收测试驱动开发 (ATDD) 和验收测试。该工具组织了各种测试自动化要求。它是一种可以通过利用用 Java 和 Python 编写的特定测试库进一步增强的测试方法。Robot Framework 使用了著名的外部库 Selenium WebDriver。
测试工程师可以使用 Robot Framework 来自动化 Web 测试以及 iOS 和 Android 测试自动化。对于熟悉关键字驱动测试的测试人员来说,Robot Framework 工具同样不难学。
2) Cypress
Cypress是最近发布的测试自动化框架,具有多种优势。尽管 Cypress 是一个功能丰富的工具,但与 Selenium 相比,它显然更受当前开发用途和设备的限制,尽管它是完全开源的,用于仪表板应用程序。另请参阅:Selenium 与 TestCafe:哪个更好?
由于 Cypress 测试是用 Mocha 和 Chai 编写的,因此顶级 JavaScript 工程师从一开始就会熟悉其结构和语法。因此,想象中的进入障碍不存在。
在您构建测试时,这些测试会在您的浏览器中实时运行,这是使用 Cypress 工具的一个重要且引人入胜的功能。
Cypress 测试还使用保证来处理 JavaScript 的非并发性,从而为那些愿意解决复杂性问题的人提供相对简单和稳定的体验。
凭借即时存根条件以及快速有效地测试组或隔离功能的能力,赛普拉斯最终可能成为跨多个应用程序进行集成测试的最佳选择。
3) Katalon Studio
Katalon Studio是另一个很棒的 Selenium 替代品。它将 Selenium 系统的开创性编程与精心构建的 GUI 相结合,形成了一个出色的测试自动化系统。Katalon Studio 是一个基于 Appium 和 Selenium 平台的移动、Web 应用程序和 REST 管理测试工具。
Katalon Studio 兼容 Jenkins、JIRA 和 Git,并且可以集成到 CI/CD 程序中。该框架具有智能报告功能,允许用户发送带有 HTML、Excel 和 PDF 测试报告的个性化电子邮件通知。它还具有称为 Katalon Analytics 的内置分析系统,可通过包含图表和指标的仪表板为客户提供全面的测试执行报告视图。
4) Screenster
对于 Web 应用程序,Screenster 可自动进行可视化用户界面测试。它是唯一能让人们看到他们所做的显示的设备。在注册 UI 测试时,Screenster 会使 DOM 崩溃,并将各个 UI 组件与它们在屏幕上的显示方式相匹配。因此,网站上的每个组件都可以由测试人员进行验证。
Screenster 是一个非常明显的用于 Web 应用程序和站点回归测试的工具。Screenster 还通过基于云的平台提供 UI 自动化测试。此外,与其他 Selenium 替代品相比,Screenster 程序确保了数倍的最佳性能。
5) CasperJS
CasperJS替代品是一个开源的测试实用程序和导航脚本,用于在 CoffeeScript 或 JavaScript 中提供的 PhantomJS 和 SlimerJS。程序员可以检查页面的状态、导航、从网站页面抓取信息并自动验证网络流量。
与 Selenium 执行时间相比,CasperJS 脚本完成测试所需的时间更少。此外,与 Selenium 相比,CasperJS 使开发测试脚本和管理代码变得简单。
6) Watir
Watir是免费开源替代品,它是在 BSD 许可下创建的。测试脚本是用 Ruby 编写的,这使得它们易于修改,特别是对于 Ruby 设计人员。此外,由于 Ruby 语言相对较短,因此使用 Waitr 工具创建的测试非常易于设计和更新。因此,测试服的长期维护开销较小。
此外,Watir 网络驱动程序建立在 WebDriver 技术之上,它可以驱动一些最知名的系统,使 Watir 与各种浏览器兼容。
7) Cucumber
Cucumber消除了非技术和技术项目团队成员之间的任何障碍。也就是说,本质上,这是其秘方的关键组成部分。实际上,Cucumber 可以用作 Selenium 的替代品或与 Selenium 一起使用。
其人类可读的测试用例鼓励跨团队协作并消除孤立的软件质量保证。功能需求、验收测试和文档都集中在 Cucumber 框架中,为测试人员和合作者创建一个自动恢复的源。动态文档还采用了可靠的需求管理方法。
8) Ghost Inspector
使用 Chrome 插件的基于浏览器的框架是Ghost Inspector 的替代方案。此实用程序是 Selenium IDE 的替代品,在录制和播放时在 Ghost Inspector 中似乎运行良好。
它在不使用任何代码的情况下考虑测试纠正。在步骤中,您可以添加、删除、重新排序、模块化和更改测试级别,以及更改操作和选择器。此功能的大部分是在不使用任何代码的情况下实现的。使用此工具,您还可以记录 JavaScript 测试、导出和导入 Selenium 代码,以及执行数据驱动测试。
9) Lemonce
Lemonce 编辑器是一个 Web 测试自动化框架,它允许您以最少的努力简单地执行回归和功能测试。该工具简单易用的代码编辑器使任何软件测试人员都能够根据需要以最少的编码快速开发、调整和更改大量测试用例。
作为 Selenium 的最佳前景之一,它有一些缺陷,例如无效的录制和播放功能。使用此工具的 Web UI 识别功能,QA 可以安全地报告和重放任何用户活动,并在任何在线组件上具有出色的识别清晰度。在录音之间,Lemonce Editor 可以自动构建可读代码和注释以及断言。
此外,Lemonce Editor 的用户只需要投入一些工作和时间来掌握 LemonCase2 - 一种可以模仿网络用户活动的简单而基本的语法。
10)TestCraft
Selenium 测试自动化框架TestCraft也是无代码的。它可以轻松地组合和使用组的模块。其尖端的 AI 技术和卓越的可视化建模允许更快地生成和执行测试,同时消除测试支持成本。使用该技术大大降低了维护费用。
无需编写任何代码,测试人员就可以创建完全自动化的测试场景。用户快速发现问题,更频繁地提交问题,使用 CI/CD,并提高其数字资产的整体质量。由于他们的人工智能系统,脚本可以自动适应变化。只需单击几下,测试人员还可以进行重大修改。
11) Protractor
Protractor是一个开源自动化框架,专为 AngularJS 在线应用自动化而设计。由于此工具基于 JavaScript Selenium WebDriver 构建,因此它可以帮助实现 Selenium WebDriver 的所有品质。
Selenium WebDriver 和测试框架都可以只用几条命令安装。量角器通过与应用程序交互来对应用程序进行测试,就好像他是用户一样。Protractor 正式称为 E2E(端到端)测试结构。
这个工具是一个很棒的选择,因为它使用 JavaScript,这是最容易学习的编程语言之一,特别是对于编程经验很少的人。作为 WebDriverJS 的包装器,Protractor 还支持 Cucumber、Jasmine 和 Mocha 等工具来安排测试套件。
所以,这就是清单!您是否使用任何其他 Selenium 替代品进行测试?在下面的评论部分与我分享。
 
 
 
SSelenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫
 
Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。
是一个基于Webkit的“无界面”(headless)浏览器,它会把网站加载到内存并执行页面上的 JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器要高效。
1、如果我们把 Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理 JavaScrip、Cookie、headers,以及任何我们真实用户需要做的事情。
 
# 导入 webdriver from selenium import webdriver # 要想调用键盘按键操作需要引入keys包 from selenium.webdriver.common.keys import Keys # 调用环境变量指定的PhantomJS浏览器创建浏览器对象 driver = webdriver.PhantomJS() # 如果没有在环境变量指定PhantomJS位置 # driver = webdriver.PhantomJS(executable_path="./phantomjs")) # get方法会一直等到页面被完全加载,然后才会继续程序,通常测试会在这里选择 time.sleep(2) driver.get("http://www.baidu.com/") # 获取页面名为 wrapper的id标签的文本内容 data = driver.find_element_by_id("wrapper").text # 打印数据内容 print data # 打印页面标题 "百度一下,你就知道" print driver.title # 生成当前页面快照并保存 driver.save_screenshot("baidu.png") # id="kw"是百度搜索输入框,输入字符串"长城" driver.find_element_by_id("kw").send_keys(u"长城") # id="su"是百度搜索按钮,click() 是模拟点击 driver.find_element_by_id("su").click() # 获取新的页面快照 driver.save_screenshot("长城.png") # 打印网页渲染后的源代码 print driver.page_source # 获取当前页面Cookie print driver.get_cookies() # ctrl+a 全选输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a') # ctrl+x 剪切输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') # 输入框重新输入内容 driver.find_element_by_id("kw").send_keys("itcast") # 模拟Enter回车键 driver.find_element_by_id("su").send_keys(Keys.RETURN) # 清除输入框内容 driver.find_element_by_id("kw").clear() # 生成新的页面快照 driver.save_screenshot("itcast.png") # 获取当前url print driver.current_url # 关闭当前页面,如果只有一个页面,会关闭浏览器 # driver.close() # 关闭浏览器 driver.quit()
 
2、鼠标动作链
 
#导入 ActionChains 类 from selenium.webdriver import ActionChains # 鼠标移动到 ac 位置 ac = driver.find_element_by_xpath('element') ActionChains(driver).move_to_element(ac).perform() # 在 ac 位置单击 ac = driver.find_element_by_xpath("elementA") ActionChains(driver).move_to_element(ac).click(ac).perform() # 在 ac 位置双击 ac = driver.find_element_by_xpath("elementB") ActionChains(driver).move_to_element(ac).double_click(ac).perform() # 在 ac 位置右击 ac = driver.find_element_by_xpath("elementC") ActionChains(driver).move_to_element(ac).context_click(ac).perform() # 在 ac 位置左键单击hold住 ac = driver.find_element_by_xpath('elementF') ActionChains(driver).move_to_element(ac).click_and_hold(ac).perform() # 将 ac1 拖拽到 ac2 位置 ac1 = driver.find_element_by_xpath('elementD') ac2 = driver.find_element_by_xpath('elementE') ActionChains(driver).drag_and_drop(ac1, ac2).perform()
 
Selenium专门提供了Select类来处理下拉框。 其实 WebDriver 中提供了一个叫 Select 的方法,可以帮助我们完成这些事情:
 
# 导入 Select 类 from selenium.webdriver.support.ui import Select # 找到 name 的选项卡 select = Select(driver.find_element_by_name('status')) select.select_by_index(1) select.select_by_value("0") select.select_by_visible_text(u"未审核") 全部取消选择怎么办呢?很简单: select.deselect_all()
 
3、页面切换
 
一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口的切换。切换窗口的方法如下: driver.switch_to.window("this is window name")
 
 
使用 window_handles 方法来获取每个窗口的操作对象。例如: for handle in driver.window_handles: driver.switch_to_window(handle)
 
4、页面等待
 
显式等待 from selenium import webdriver from selenium.webdriver.common.by import By # WebDriverWait 库,负责循环等待 from selenium.webdriver.support.ui import WebDriverWait # expected_conditions 类,负责条件出发 from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get("http://www.xxxxx.com/loading") try: # 页面一直循环,直到 id="myDynamicElement" 出现 element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "myDynamicElement")) ) finally: driver.quit()
 
 
隐式等待 隐式等待比较简单,就是简单地设置一个等待时间,单位为秒。 from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(10) # seconds driver.get("http://www.xxxxx.com/loading") myDynamicElement = driver.find_element_by_id("myDynamicElement") 当然如果不设置,默认等待时间为0。
 

posted on 2023-04-29 10:22  shuzihua  阅读(163)  评论(0编辑  收藏  举报

导航