写在前面
今天是国庆节的最后一天,明天又要上班了,真的是感觉好像才开始放假一样,还是因为失恋没缓过来吗?
我的国庆七天
第1天,当了近半天的司机,陪家人去各大超市去购物,下午在家躺·····
第2-5天,重感冒,鼻涕不止,浑身酸痛乏力,两卷卫生纸下去,鼻子已经废了,真的是躺平了······
第6天,打嗝不止,干咳、嗓子发炎肿了、鼻子烧了、嗓子基本说不出话了······
综上,真的这个假期过的好累,算是大病一场吗?
该做点什么
早上6点20醒了,刷了一集《请君》,觉得状态还不错,还是写点东西吧,也算找找状态吧。
不管经历过什么,孰对孰错,生活还是要继续的,和自己和解,要学习的还有很多,充实过好每一天即可。
Playwright之浏览器操作
基础参数
这系列的文章还要继续下去的,那么接下来要进行浏览器部分的操作了。
1、创建浏览器对象
示例代码如下:
//默认为无头浏览器方式启动 browser = playwright.chromium().launch(); //参数设定方式启动 browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(true).setSlowMo(5000));
2、创建浏览器上下文
context = browser.newContext();
3、创建Page对象
一般来说,一个page对应一个浏览器选项卡,这点和selenium有点像,也可以说是比selenium分的更细致?
示例如下:
page = context.newPage();
浏览操作
1、浏览器最大化
这里以chrome浏览器为例,示例代码如下:
Playwright playwright = Playwright.create(); //看到某博主写的python版的加--start-maximized这个参数,本人尝试后发现无效(Mac系统) //Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions() // .setArgs(Collections.singletonList("--start-maximized")) // .setHeadless(false)); Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)); browser.newContext(new Browser.NewContextOptions() .setIgnoreHTTPSErrors(true) .setJavaScriptEnabled(true) .setViewportSize(2880, 1800)); Page page = browser.newPage(); page.navigate("https://www.cnblogs.com/longronglang"); System.out.println(page.title()); browser.close(); playwright.close();
2、多个浏览器启动
就是个浏览器的封装,没啥技术含量,示例代码如下:
import com.microsoft.playwright.*; import org.testng.annotations.Test; /** * @author rongrong * @version 1.0 * @description 浏览器窗口操作 * @date 2022/10/7 2:21 PM */ public class TestBrowser { /** * 创建浏览器上下文 * * @param browser * @return */ public BrowserContext createContext(Browser browser) { BrowserContext context = browser.newContext(new Browser.NewContextOptions() .setIgnoreHTTPSErrors(true) .setJavaScriptEnabled(true) //此处可以理解为设定指定窗口启动 .setViewportSize(1980, 1080)); return context; } /** * 创建浏览器 * * @param name * @param playwright * @return */ public Browser createBrowser(String name, Playwright playwright) { try { switch (name) { case "firefox": return playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(false).setTimeout(120 * 1000)); case "chromium": return playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setTimeout(120 * 1000)); case "webkit": return playwright.webkit().launch(); } } catch (Exception e) { e.printStackTrace(); } return null; } @Test public void testBrowser() { //火狐浏览器 startBrowser("firefox"); //谷歌浏览器 startBrowser("chromium"); //这个浏览器不好使 //startBrowser("webkit"); } /** * 根据浏览器类型,启动浏览器 * * @param browserName */ private void startBrowser(String browserName) { //创建Playwright Playwright playwright = Playwright.create(); //创建Browser(使用谷歌浏览器) Browser browser = createBrowser(browserName, playwright); //创建浏览器上下文 BrowserContext browserContext = createContext(browser); Page page = browserContext.newPage(); page.navigate("https://www.cnblogs.com/longronglang"); System.out.println("page.title :" + page.title()); System.out.println(browserName + " 浏览器启动了!"); browser.close(); browserContext.close(); playwright.close(); } }
效果如下:
3、前进/后退/刷新操作
示例代码如下:
Playwright playwright = Playwright.create(); Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)); browser.newContext(new Browser.NewContextOptions() .setIgnoreHTTPSErrors(true) .setJavaScriptEnabled(true) .setViewportSize(2880, 1800)); Page page = browser.newPage(); page.navigate("https://www.cnblogs.com/longronglang"); //输出:久曲健 - 博客园 System.out.println("page title:"+page.title()); //这里是运行时打断点使用,方便调试(适用于喜欢用录制回放生成脚本的同学) //page.pause(); pause(3); //打开百度页面 page.navigate("https://www.baidu.com/"); //输出:百度一下,你就知道 System.out.println("page title:"+page.title()); //后退操作 page.goBack(); pause(3); //输出:久曲健 - 博客园 System.out.println("page title:"+page.title()); //前进操作 page.goForward(); pause(3); System.out.println("page title:"+page.title()); //刷新操作 page.reload(); pause(3); //输出当前url System.out.println("page url:"+page.url()); browser.close(); playwright.close();
效果如下:
到此,关于浏览器的操作部分已分享完毕,有兴趣的同学可以自行尝试,更多请参考官方文档。
写在最后
这个博客从上午九点多写到现在,表示很惭愧,大部分时间还是在刷手机,懒散坏了,想收收心,怕是真的很难!
整个人还是不太好,因为打嗝不止,震的我脖子都疼,果然病痛确实很折磨人!
看到很好的一句话分享给大家,也送给每个恋爱过程中朋友:
分享如下:
连回音都没有的山谷,不值得纵身一跃;
。——知乎