描述
需要实现的内容如下:
- 使用playwright加载某宝登录页面
- 切换到二维码登录模式
- 将二维码保存为本地图片
实现
import com.microsoft.playwright.*;import lombok.extern.slf4j.Slf4j;import org.apache.commons.io.FileUtils;import java.io.File;import java.nio.file.Path;import java.nio.file.Paths;@Slf4jpublic class QrcodeDemo {public void capture() {log.debug("start to test playwright demo");try (Playwright playwright = Playwright.create()) {BrowserType chromium = playwright.chromium();Path userDataDir = Paths.get("d:/my/");BrowserContext context = chromium.launchPersistentContext(userDataDir,new BrowserType.LaunchPersistentContextOptions().setHeadless(false).setDevtools(false).setSlowMo(50));//正式调用登录页面,进行登录,然后将登录信息保存到browserContext中String loginUrl = "https://login.taobao.com";log.debug("准备登录,地址为[{}]", loginUrl);try(Page page = context.newPage()){page.navigate(loginUrl);page.waitForLoadState();//点击显示二维码page.locator("//i[@class='iconfont icon-qrcode']").click();//获取二维码, 并写入图片byte[] screenshot = page.locator("//div[@class='qrcode-img']//canvas").screenshot();FileUtils.writeByteArrayToFile(new File("d://data/qrcode.png"), screenshot);log.debug("二维码写入成功");}catch (Exception e){log.debug("登录失败,url:" + loginUrl);return;}log.debug("over");} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {QrcodeDemo demo = new QrcodeDemo();demo.capture();}}
