Playwright建议使用官方的Playwright Pytest插件来编写测试,它已经提供了上下文隔离,以及对各种浏览器的支持,同时提供了同步执行和异步执行的支持,当然也可以编写自己的基础框架或者工具类来自定义执行测试
pip install pytest-playwright
C:\Users\Administrator>pip install pytest_playwright
Collecting pytest_playwright
Downloading pytest_playwright-0.3.3-py3-none-any.whl (10 kB)
Requirement already satisfied: playwright>=1.18 in c:\python310\lib\site-packages (from pytest_playwright) (1.33.0)
Requirement already satisfied: pytest<8.0.0,>=6.2.4 in c:\python310\lib\site-packages (from pytest_playwright) (7.3.1)
Requirement already satisfied: pytest-base-url<3.0.0,>=1.0.0 in c:\python310\lib\site-packages (from pytest_playwright) (2.0.0)
Requirement already satisfied: python-slugify<9.0.0,>=6.0.0 in c:\python310\lib\site-packages (from pytest_playwright) (8.0.1)
Requirement already satisfied: greenlet==2.0.1 in c:\python310\lib\site-packages (from playwright>=1.18->pytest_playwright) (2.0.1)
Requirement already satisfied: pyee==9.0.4 in c:\python310\lib\site-packages (from playwright>=1.18->pytest_playwright) (9.0.4)
Requirement already satisfied: typing-extensions in c:\python310\lib\site-packages (from pyee==9.0.4->playwright>=1.18->pytest_playwright) (4.5.0)
Requirement already satisfied: iniconfig in c:\python310\lib\site-packages (from pytest<8.0.0,>=6.2.4->pytest_playwright) (2.0.0)
Requirement already satisfied: packaging in c:\python310\lib\site-packages (from pytest<8.0.0,>=6.2.4->pytest_playwright) (23.1)
Requirement already satisfied: pluggy<2.0,>=0.12 in c:\python310\lib\site-packages (from pytest<8.0.0,>=6.2.4->pytest_playwright) (1.0.0)
Requirement already satisfied: exceptiongroup>=1.0.0rc8 in c:\python310\lib\site-packages (from pytest<8.0.0,>=6.2.4->pytest_playwright) (1.1.1)
Requirement already satisfied: tomli>=1.0.0 in c:\python310\lib\site-packages (from pytest<8.0.0,>=6.2.4->pytest_playwright) (2.0.1)
Requirement already satisfied: colorama in c:\python310\lib\site-packages (from pytest<8.0.0,>=6.2.4->pytest_playwright) (0.4.6)
Requirement already satisfied: requests>=2.9 in c:\python310\lib\site-packages (from pytest-base-url<3.0.0,>=1.0.0->pytest_playwright) (2.30.0)
Requirement already satisfied: text-unidecode>=1.3 in c:\python310\lib\site-packages (from python-slugify<9.0.0,>=6.0.0->pytest_playwright) (1.3)
Requirement already satisfied: charset-normalizer<4,>=2 in c:\python310\lib\site-packages (from requests>=2.9->pytest-base-url<3.0.0,>=1.0.0->pytest_playwright) (3.1.0)
Requirement already satisfied: idna<4,>=2.5 in c:\python310\lib\site-packages (from requests>=2.9->pytest-base-url<3.0.0,>=1.0.0->pytest_playwright) (3.4)
Requirement already satisfied: urllib3<3,>=1.21.1 in c:\python310\lib\site-packages (from requests>=2.9->pytest-base-url<3.0.0,>=1.0.0->pytest_playwright) (2.0.2)
Requirement already satisfied: certifi>=2017.4.17 in c:\python310\lib\site-packages (from requests>=2.9->pytest-base-url<3.0.0,>=1.0.0->pytest_playwright) (2023.5.7)
Installing collected packages: pytest_playwright
Successfully installed pytest_playwright-0.3.3
playwirght install
创建一个py文件,按照Pytest的命名规则即可,例如 test_my_application.py ,然后将如下代码写入文件并保存
import re
from playwright.sync_api import Page, expect
def test_homepage_has_Playwright_in_title_and_get_started_link_linking_to_the_intro_page(page: Page):
page.goto("https://playwright.dev/")
# Expect a title "to contain" a substring.
expect(page).to_have_title(re.compile("Playwright"))
# create a locator
get_started = page.get_by_role("link", name="Get started")
# Expect an attribute "to be strictly equal" to the value.
expect(get_started).to_have_attribute("href", "/docs/intro")
# Click the get started link.
get_started.click()
# Expects the URL to contain intro.
expect(page).to_have_url(re.compile(".*intro"))
默认情况下,测试会在chromium上执行,但这个可以通过配置CLI进行修改,并且默认情况下测试执行是在headless模式下,意味着不会启动浏览器的UI,测试执行的过程和结果会直接在命令行终端显示
在该文件的相同的路径下,直接运行命令 pytest 即可执行
官方地址为:jdk-11.0.6,找到WIndows系统上所需的安装文件 jdk-11.0.6_windows-x64_bin.exe , 按照引导下载即可,现如今比较麻烦的是Oracle强制登陆,因此可能还需要注册个账号,只是稍微麻烦了点
以JDK11为例,双击 jdk-11.0.6_windows-x64_bin.exe ,启动JDK安装程序,第一个界面如下所示,直接点击 下一步
安装程序会自行完成复制、提取、注册、安装等过程,直到如图所示界面出现即安装完成,点击关闭
路线 I:打开控制面板==》系统==》高级系统设置 》环境变量》系统变量
路线 II:在我的电脑上点击鼠标右键,在弹出的菜单中点击属性,殊途同归
系统变量:中添加配置项 JAVA_HOME ,其中变量值是安装JDK的路径,如果是默认安装的则跟下图一样
系统变量:中添加配置项 CLASSPATH ,如图所示,变量值为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
,请尽量复制黏贴
注意 . 代表的是当前路径,这决定于Java执行的时候去那个路径找class文件,如若原理不清,就直接复制黏贴即可
系统变量:中找到 Path ,为该项添加变量值 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 注意分号,多个变量之间用 ; 号隔开,否则不但无法生效还会影响其他配置
命令行输入 java -version
,输出如下内容则表示正确
C:\Users\davieyang>java -version
java version "11.0.6" 2020-01-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.6+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.6+8-LTS, mixed mode)
命令行输入javac
,输出如下内容则表示正确
C:\Users\davieyang>javac
用法: javac <options> <source files>
其中, 可能的选项包括:
@<filename> 从文件读取选项和文件名
-Akey[=value] 传递给注释处理程序的选项
--add-modules <模块>(,<模块>)*
除了初始模块之外要解析的根模块; 如果 <module>
为 ALL-MODULE-PATH, 则为模块路径中的所有模块。
--boot-class-path <path>, -bootclasspath <path>
覆盖引导类文件的位置
--class-path <path>, -classpath <path>, -cp <path>
指定查找用户类文件和注释处理程序的位置
-d <directory> 指定放置生成的类文件的位置
-deprecation 输出使用已过时的 API 的源位置
--enable-preview 启用预览语言功能。要与 -source 或 --release 一起使用。
-encoding <encoding> 指定源文件使用的字符编码
-endorseddirs <dirs> 覆盖签名的标准路径的位置
-extdirs <dirs> 覆盖所安装扩展的位置
-g 生成所有调试信息
-g:{lines,vars,source} 只生成某些调试信息
-g:none 不生成任何调试信息
-h <directory> 指定放置生成的本机标头文件的位置
--help, -help, -? 输出此帮助消息
--help-extra, -X 输出额外选项的帮助
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-J<flag> 直接将 <标记> 传递给运行时系统
--limit-modules <模块>(,<模块>)*
限制可观察模块的领域
--module <module-name>, -m <module-name>
只编译指定的模块, 请检查时间戳
--module-path <path>, -p <path>
指定查找应用程序模块的位置
--module-source-path <module-source-path>
指定查找多个模块的输入源文件的位置
--module-version <版本> 指定正在编译的模块版本
-nowarn 不生成任何警告
-parameters 生成元数据以用于方法参数的反射
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...]
要运行的注释处理程序的名称; 绕过默认的搜索进程
--processor-module-path <path>
指定查找注释处理程序的模块路径
--processor-path <path>, -processorpath <path>
指定查找注释处理程序的位置
-profile <profile> 请确保使用的 API 在指定的配置文件中可用
--release <release> 针对特定 VM 版本进行编译。支持的目标: 6, 7, 8, 9, 10, 11
-s <directory> 指定放置生成的源文件的位置
-source <release> 提供与指定发行版的源兼容性
--source-path <path>, -sourcepath <path>
指定查找输入源文件的位置
--system <jdk>|none 覆盖系统模块位置
-target <release> 生成特定 VM 版本的类文件
--upgrade-module-path <path>
覆盖可升级模块位置
-verbose 输出有关编译器正在执行的操作的消息
--version, -version 版本信息
-Werror 出现警告时终止编译
1、安装JDK11,JDK的配置属于最最基本的要求,应该烂熟于心
2、启动IDEA,然后点击【Create New Project】
5、给项目命名以及选择源码放在哪个路径下,然后Finish即可
8、package建好后,在package上点击右键,New—Java Class
9、下拉列表中输入新建的java文件的名称,然后下拉列表中还是选择Class
11、实际上到这里集成开发环境是无法执行的但是在命令行直接用命令是可以执行的,集成开发环境需要进一步配置,找到Run这个选项
12、点击该选项或者直接使用快捷键Alt+Shift+F10,会弹出配置选项,开发环境需要我们指定主类,如果不指定它找不到,在弹出窗口中点击【Edit Configurations】
13、在配置窗口点击左上角的加号,新建一个Run/Debug 的配置
-Maven是一个项目管理工具,它包含 了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定 义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件
变量名可用M2_HOME或者MAVEN_HOME,变量值就是安装目录,如果JDK配的很遛,这个同理
PATH:%M2_HOME%\bin;
配置MVN本地仓库物理地址,也就是maven会从中央仓库下载需要的jar包到本地,根据自己的安装,找到如下路径
再此路径下打开setting.xml,配置项如下,注意XML节点,配置成自己合适存放所下载jar包的路径即可
配置MVN中央仓库:将如下配置内容添加到镜像配置中
<mirror>
<id>alimavenid>
<mirrorOf>centralmirrorOf>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
mirror>
此处单配置了一个镜像地址,是阿里云的地址,官方地址下载太慢可以通过这个位置的配置代替
将该文件复制如下路径下,如果没有.m2路径,启动命令行执行命令mvn help:system
来生成,然后将原来的配置文件复制到生成的.m2路径下,集成开发工具,如IDEA等会自动读取.m2路径下的配置
IDEA官方下载地址:https://www.jetbrains.com/idea/download/,默认安装即可,打开IDEA,新建一个maven项目,检查Maven的配置如图所示,箭头所指两个配置已经更新到了前边步骤中的位置
IDEA会在右下角(注意右下角)提示你是否需要自动安装pom配置的jar包,一旦出现,就要enable它
配置pom
找到pom.xml文件,打开它,配置项目所需的依赖包,如下图配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>org.examplegroupId>
<artifactId>examplesartifactId>
<version>0.1-SNAPSHOTversion>
<name>Playwright Client Examplesname>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
properties>
<dependencies>
<dependency>
<groupId>com.microsoft.playwrightgroupId>
<artifactId>playwrightartifactId>
<version>1.34.0version>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.10.1version>
<configuration>
<source>1.8source>
<target>1.8target>
configuration>
plugin>
plugins>
build>
project>
到此Java环境完成Pom中配置的依赖可以在MVN的中央库http://mvnrepository.com/, 检索到你想要的包,配置进去即可
基本的常用命令如下:
mvn archetype:create 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvnjetty:run 启动jetty服务
mvntomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类
配置Java的开发环境,首先要对使用Maven构建Java环境比较熟悉,Playwright的Java开发环境只是在Maven构建的Java环境中配置Pom的时候,将其添加到依赖中,配置好Java开发环境后,在项目中新建个java文件,写入如下代码
package org.example;
import com.microsoft.playwright.*;
public class App {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
page.navigate("http://playwright.dev");
System.out.println(page.title());
}
}
}
执行即可