描述

需要实现的内容如下:

  1. 使用playwright加载某宝登录页面
  2. 切换到二维码登录模式
  3. 将二维码保存为本地图片

实现

  1. import com.microsoft.playwright.*;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.apache.commons.io.FileUtils;
  4. import java.io.File;
  5. import java.nio.file.Path;
  6. import java.nio.file.Paths;
  7. @Slf4j
  8. public class QrcodeDemo {
  9. public void capture() {
  10. log.debug("start to test playwright demo");
  11. try (Playwright playwright = Playwright.create()) {
  12. BrowserType chromium = playwright.chromium();
  13. Path userDataDir = Paths.get("d:/my/");
  14. BrowserContext context = chromium.launchPersistentContext(userDataDir,
  15. new BrowserType.LaunchPersistentContextOptions().setHeadless(false).setDevtools(false).setSlowMo(50));
  16. //正式调用登录页面,进行登录,然后将登录信息保存到browserContext中
  17. String loginUrl = "https://login.taobao.com";
  18. log.debug("准备登录,地址为[{}]", loginUrl);
  19. try(Page page = context.newPage()){
  20. page.navigate(loginUrl);
  21. page.waitForLoadState();
  22. //点击显示二维码
  23. page.locator("//i[@class='iconfont icon-qrcode']").click();
  24. //获取二维码, 并写入图片
  25. byte[] screenshot = page.locator("//div[@class='qrcode-img']//canvas").screenshot();
  26. FileUtils.writeByteArrayToFile(new File("d://data/qrcode.png"), screenshot);
  27. log.debug("二维码写入成功");
  28. }catch (Exception e){
  29. log.debug("登录失败,url:" + loginUrl);
  30. return;
  31. }
  32. log.debug("over");
  33. } catch (Exception e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. public static void main(String[] args) {
  38. QrcodeDemo demo = new QrcodeDemo();
  39. demo.capture();
  40. }
  41. }