1.如何在Selenium WebDriver中截
2.Playwright入门
3.u盘启动failtostart
4.重回铁王座!码分时隔5年,码分Quill 2.0 终于发布啦!码分
如何在Selenium WebDriver中截
在Selenium WebDriver中截图,码分用于错误分析,码分通常涉及使用TakeScreenshot方法。码分电影票竞价系统 源码此方法通知WebDrive截取屏幕截图并存储在Selenium中。码分以下是码分截图的三个步骤:将Web驱动程序对象转换为TakeScreenshot,调用getScreenshotAs方法创建文件,码分将文件复制到所需位置。码分示例中,码分将捕获的码分屏幕截图保存为C:/Test.png。注意,码分Selenium版本3.9.0及以上版本不再提供Apache Commons IO JAR,码分可以下载并添加到项目中。码分
Ashot是Yandex提供的第三方工具,支持在Selenium WebDriver下捕获屏幕截图。它特别适用于捕获单个WebElement的屏幕截图和页面的整页屏幕截图。配置Ashot API有两种方法:通过Maven配置或手动配置。使用Ashot API捕获全页屏幕截图时,程序会以每毫秒滚动一次的方式捕获页面内容,并将其写入指定文件,支持jpg、png等文件类型。对于大于屏幕尺寸的页面,可以使用Ashot API的ShootingStrategy类捕获全图。截取页面特定元素的屏幕快照时,可以使用Ashot API针对具体元素进行捕获并保存。
通过使用Selenium WebDriver和Ashot API,我答答源码开发者能够灵活地根据需求捕获不同类型的屏幕截图,包括页面截图、特定元素截图以及全图截图。这不仅有助于错误分析,还能在自动化测试中提供更丰富的反馈信息。总之,正确配置和使用这些工具能够极大提高测试效率和准确性。
Playwright入门
Playwright入门介绍
Playwright 是一款强大的自动化库,由微软开源,专为现代web应用的自动化测试提供解决方案。相比 Selenium,Playwright 在性能上更高,并且无需频繁下载webdriver以适应不同浏览器版本。它支持 Chrome、Firefox、WebKit 等浏览器,并且提供 TypeScript、JavaScript、Python、.NET、Java 等多种语言的 API 接口。越来越多的用户开始使用 Playwright 进行自动化测试。在爬虫领域,Playwright 也表现出色。本文将通过爬取百度搜索结果的示例,来讲解 Playwright 的基本使用方法。
安装 Playwright
通过 pip 执行命令来安装最新的 Playwright 库。安装完成后,网站源码更换执行命令会自动安装 Chromium、Firefox 和 WebKit 浏览器,Playwright 通过控制这些浏览器操作 web 应用。
Playwright 初始化
Playwright 提供了同步和异步两套 API,因为浏览器页面操作通常为 IO 密集型,异步模式更适合。以下示例使用异步 API 来展示初始化部分,包括创建 Playwright 上下文环境、创建浏览器和创建页面。使用 async with 协助管理上下文,自动清理环境。若需要更灵活地控制环境的清理,可以参考不使用 async with 的代码示例。
访问页面
通过 Page 类来打开并访问网页。可以使用 Browser 直接创建页面实例,也可以通过 BrowserContext 创建页面,使用同一 BrowserContext 的页面共享 cookies、本地存储等,有助于减少资源消耗。示例已展示如何使用 Browser 创建页面并访问百度。
操作页面元素
为了达到目的,必须能够操控页面中的元素,如模拟点击、填写表单和提取页面内容。首先需要定位页面上的元素,Playwright 提供了丰富的定位方法。推荐查阅 API 文档进行使用,这里仅介绍通用的iboot源码下载 locator 方法,如 page.locator,支持 CSS 选择器和 XPath 形式。
示例代码展示了如何使用 CSS 选择器和 XPath 来在百度首页中输入搜索关键词并点击搜索功能。
提取页面信息
locator.get_attribute、locator.input_value、locator.inner_text、locator.inner_html 和 locator.text_content 等方法分别用于提取页面元素的属性、值、文本和 HTML 内容。获取页面标题可以使用 await page.title(),获取页面响应源码则直接通过 await page.goto() 方法。
完整的示例
以下示例代码实现的功能是通过关键词进行百度搜索,提取搜索结果中的标题和真实 URL 链接,并可以控制爬取的页数。通过细致分析搜索结果,可以轻松获取真实链接,代码中包含详细的实现步骤和逻辑。
总结
Playwright 提供了全面的自动化测试解决方案,适用于不同场景,包括浏览器控制、页面操作和爬虫应用。通过本文的示例,你将对 Playwright 的基本使用有更深入的理解。实际操作中,结合 API 文档和丰富的示例,可以更高效地实现自动化测试和爬虫任务。
u盘启动failtostart
u盘启动failtostart(华硕bios设置U盘启动)#人人能科普,处处有新知#
Selenium WebDriver 仍然是街机源码论坛处理 UI 自动化测试的最流行的工具之一。特别是使用 Selenium 4,WebDriver 通过解决许多新问题继续在测试界受到欢迎。
另一方面,如果您是 WebDriver 用户,您无疑会遇到一些问题,或者很快就会遇到。在本文中,我将分享您在使用它时可能遇到的5个问题,以及它们的解决方案。那么让我们开始吧!
1. SSL 证书问题
当 web 浏览器无法验证安装在网站上的 SSL 证书时,就会发生 SSL 证书错误。然后,当 WebDriver 试图打开一个网站时,浏览器会显示这个错误信息:
这个问题是在本地环境中测试时经电脑常遇到的问题之一。虽然这看起来像是一个障碍,但是你可以使用 WebDriver 轻松地克服它。首先我们需要创建一个 ChromeOptions 类对象:
ChromeOptions handlingSSL = new ChromeOptions();然后,我们使用 ACCEPT _ insecure _ certs 方法接受不可信的证书:
handlingSSL.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);现在我们需要设置如下的路径的 chrome 驱动程序:
String pathForChromeDriverSSL= 1 ="write here your chromeDriver path" ;System.setProperty("webdriver.chrome.driver" “ webdriver.chromedriver”, System.getProperty("user.dir")+pathForChromeDriverSSL + pathForChromeDriverSSL);在路径设置之后,我们用 ChromeOptions 对象创建一个 Chrome 驱动程序的实例:
WebDriver driver = new ChromeDriver(handlingSSL);我们已经准备好用“ get ()”的方法打开网站:
driver.get("URL");您可以将上述步骤应用于您的 Driver 类,并在需要时使用它们。
驱动程序不是可执行的问题电脑
如果你不想经常下载最新的 Chrome 驱动程序版本,Bonigarcia WebDriver 管理器在很多方面都是一个很好的解决方案。然而,它也有一些局限性。例如,当您需要在 Apache Tomcat 这样的服务器或 Docker 在这样的容器上工作时,您必须下载第三方 WebDriver。
如果你在 Linux 上使用 Chrome 驱动程序,那么在版本控制(Git、 SVN 等等)中最有可能遇到的问题就是驱动程序不可执行:
java.lang.IllegalStateException: 驱动程序不是可执行的
我保证当你在谷歌上搜索这个例外时,你会迷路的。当然,有许多复杂的方法可以解决这个问题,但是您可以通过您的 Driver 类中使用简单的实现轻松地克服它。解决方案 -
你需要导入类 java.io.File:
String pathTheChromeDriverForLinux= "the path of your 3 party chrome driver for Linux";File file= new File(System.getProperty("user.dir")+pathTheChromeDriverForLinux);file.setExecutable(true);3. Docker 容器问题的 WebDriver BugDocker 是当今最流行的容器,为软件开发和 CI/CD 过程提供了有用的解决方案。但是,如果您想通过一个在 Docker 上运行的 Jenkins 来运行 ChromeDriver,您可能会感到失望,因为它不能工作。您将看到以下错误的消息:
Selenium::WebDriver::Error::UnknownError:unknown error: DevToolsActivePort file doesn't existunknown error: DevToolsActivePort file doesn't exist(Driver info: chromedriver=2.. (d1abb2deeb2c3e3b9fcde7),platform=Linux 4.4.0--generic x_) (WARNING: The server did not provide any stacktrace information)Command duration or timeout: . secondsBuild info: version: '3.8.1', revision: '6eab', time: '--T::.Z'System info: host: 'ubuntu-test', ip: 'X.X.X.X', os.name: 'Linux', os.arch: 'amd', os.version: '4.4.0--generic', java.version: '1.8.0_'Driver info: driver.version: ChromeDriver...The reason is a ChromeDriver bug on Docker. Whenever ChromeDriver tries to run within Docker, the driver will fail to start because of the error “DevToolsActivePort file doesn’t exist”. If you want to travel the history of the error, here are some StackOverflow links for you:原因是 Docker 上的 ChromeDriver bug。每当 ChromeDriver 试图在 Docker 中运行时,驱动程序将无法启动,因为“ DevToolsActivePort 文件不存在”的错误。如果你想了解这个错误的历史,这里有一些东西 StackOverflow 的链接:
Unknown error: DevToolsActivePort file doesn’t exist error while executing Selenium UI test cases on ubuntu
/questions//unknown-error-devtoolsactiveport-file-doesnt-exist-error-while-executing-selen
Capybara headless chrome in docker returns DevToolsActivePort file doesn’t exist
/questions//capybara-headless-chrome-in-docker-returns-devtoolsactiveport-file-doesnt-exist/
但是如果你对解决方案直接感兴趣,这里是解决方案
同样,我们也需要使用 setHeadless ()方法创建一个 ChromeOptions 类的对象作为“ true”:
ChromeOptions chromeOptions = new ChromeOptions().setHeadless(true);我们需要在 chromeOptions 中添加参数“-no-sandbox”和“-disable-dev-shm-usage”,如下所示:
chromeOptions.addArguments("--no-sandbox","--disable-dev-shm-usage");添加参数后,我们用 chromeOptions 对象创建一个 Chrome 驱动程序实例:
WebDriver driver = new ChromeDriver(chromeOptions);现在你没有麻烦了!
4. 屏幕分辨率不同的问题
对于软件测试自动化工程师来说,最大的噩梦之一就是在本地通过测试,但在远程测试中失败。仅仅在本地计算机上进行自动化测试是不够的,还必须编写通用测试。我的意思是,您的测试需要在不同的环境(浏览器、移动设备或操作系统)中执行。
在另一台计算机上运行测试时会遇到的一个差异(这个差异肯定会影响测试)是屏幕分辨率。最常见的问题是 Selenium 无法在较小的屏幕分辨率下找到以前发现的 web 元素。
当然,你可以通过使用 javascriptor 可以开发各种各样的解决方案来找到 web 元素。但是,如果您遇到了 NoSuchElementException 以外的问题,那么这些解决方案将不起作用。
在这种情况下,最好的方法是使用 DesiredCapabilities 类。渴望的功能为 Selenium WebDriver 提供了有关执行测试时所使用的环境的说明。
例如,在运行测试之前,可以根据计算机设置浏览器屏幕分辨率。对于这一点,向 Driver 添加几行新代码就足够了,如下-
假设你想把屏幕分辨率改为 × ,你需要像这样设置 DesiredCapabilities:
DesiredCapabilities desiredCaps = new DesiredCapabilities();desiredCaps.setCapability("os", "Windows");desiredCaps.setCapability("os_version", "");desiredCaps.setCapability("browser", "chrome");desiredCaps.setCapability("resolution", "x");如果创建一个 WebDriver 实例并将 DesiredCapabilities 设置为:
WebDriver driver = new ChromeDriver(desiredCaps);您将看到这个通知: “不推荐使用 ChromeDriver 构造函数(性能)”。您可以使用 ChromeOptions 和 merge ()方法来处理这个问题,如下所示:
ChromeOptions options= new ChromeOptions();// I added an argument as exampleoptions.addArguments("--start-maximized");options.merge(desiredCap);WebDriver driver = new ChromeDriver(options);5? The DifferentDefault Browser Language Problem5. 不同的默认浏览器语言问题同样,WebDriver 测试在不同环境中遇到的问题之一是不同的默认浏览器语言。例如,您根据默认语言为英语的浏览器设置测试。但是,其他人希望在默认语言为德语的浏览器中运行这些测试。
如果 AUT 是一个在多个国家使用的应用程序,并且根据语言的不同而有所不同,那么您的测试肯定会有问题。为了避免这个问题,您可以独立于环境使用 Selenium WebDriver 更改浏览器的默认语言。以下是解决方案:
ChromeOptions options = new ChromeOptions();options.addArguments("-lang= en");WebDriver driver = new ChromeDriver(options);你可以在这里找到 ISO 语言代码。在上面的设置之后,你可以检查你的浏览器当前的默认语言如下:
JavascriptExecutor executor = (JavascriptExecutor) driver; String actualLanguage = executor.executeScript("return window.navigator.userlanguage || window.navigator.language").toString();
总结在本文中,我们研究了 UI 测试过程中可能遇到的5个重要问题及其解决方案。每天都在开发和更改的软件应用程序无疑会给我们带来全新的测试问题。我相信这种情况会让所有的测试自动化工程师感到兴奋,因为每一个新的问题都意味着一个新的旅程。不要害怕踏上这些旅程,即使最终没有解决方案
本人抖音账号:里面有最新最流行的automation devops等技术的介绍,欢迎大家一建三连。电脑
重回铁王座!时隔5年,Quill 2.0 终于发布啦!
由Kagol团队亲身体验并撰写的报道: 历经五年,Quill 终于迎来了全新的篇章——Quill 2.0的发布,自上一个稳定版1.3.7在年9月9日发布后,已经过去了4年又7个月的等待期。 富文本编辑器的应用场景广泛,我在OpenTiny开源项目的运营过程中,经常被问及是否支持富文本。年6月,我们决定为OpenTiny开发富文本组件,经过技术选型,尽管Quill曾是热门选择,但鉴于其长时间未发布新版本,我们最终选择了Tiptap作为开发工具。 Quill 2.0在年7月首次发布dev版2.0.0-dev.0,随后在同年月更新至2.0.0-dev.3,但自此之后,Quill 2.0的开发似乎停滞不前。开发者在issue中寻求更新,但官网无回应,一度给人留下Quill“死亡”的印象。 回顾过去,我从年开始与Quill结缘,那时它是最受欢迎的富文本之一,基于此我开发了EditorX,应用于华为的多个业务,并撰写了《深入浅出 Quill》系列文章。五年的期待,Quill 2.0的发布让我激动不已,现在就为大家揭示它的主要变化。功能升级
Quill 2.0最大的变化在于支持表格操作,这是1.0版本所不具备的。尽管目前仅可通过API操作,工具栏上仍无法直接插入自定义行列的表格,但这是迈向成熟的重要一步。技术重构
在工程结构上,Quill 2.0从JavaScript转向TypeScript,并采用了Monorepo架构,这提升了开发效率和用户体验。测试工具也进行了更新,如从WebdriverIO切换到Vitest,E2E测试则改用Playwright。多实例支持
为了适应开发者的需求,Quill 2.0支持在同一页面使用多个编辑器实例,不同实例可配置各自的格式,避免了格式冲突。性能优化
新版本着重优化了大内容的渲染速度,例如在处理个实例时,加载时间有了显著提升。 要了解更多Quill 2.0的详情,可以参考官方文档和博客文章。同时,欢迎关注《深入浅出 Quill》系列,继续探索Quill的魅力和其背后的实现原理。关于OpenTiny
OpenTiny作为一套企业级前端解决方案,提供了TinyVue跨端组件库,以及TinyNG和TinyEngine等工具,致力于提升开发效率。加入OpenTiny开源社区,参与技术交流,或访问官网获取更多资源。