标签: playwright

使用 python playwright 获取 href 链接

我正在尝试提取 href 内的链接,但我发现它只是元素内的文本

\n

网站代码如下:

\n
<div class="item-info-container ">\n   <a href="/imovel/32600863/" role="heading" aria-level="2" class="item-link xh-highlight" \n   title="Apartamento T3 na avenida da Liberdade, S\xc3\xa3o Jos\xc3\xa9 de S\xc3\xa3o L\xc3\xa1zaro e S\xc3\xa3o Jo\xc3\xa3o do Souto, Braga">\n   Apartamento T3 na avenida da Liberdade, S\xc3\xa3o Jos\xc3\xa9 de S\xc3\xa3o L\xc3\xa1zaro e S\xc3\xa3o Jo\xc3\xa3o do Souto, Braga\n   </a>\n
Run Code Online (Sandbox Code Playgroud)\n

我正在使用的代码是:

\n
element_handle = page.locator('//div[@class="item-info-container "]//a').all_inner_texts()\n
Run Code Online (Sandbox Code Playgroud)\n

无论我是否指定//a[@href],我的输出始终是标题文本:

\n
Apartamento T3 na avenida da Liberdade, S\xc3\xa3o Jos\xc3\xa9 de S\xc3\xa3o L\xc3\xa1zaro e S\xc3\xa3o Jo\xc3\xa3o do Souto, Braga\n
Run Code Online (Sandbox Code Playgroud)\n

当我真正想要实现的是: …

python xpath web-scraping playwright

2
推荐指数
1
解决办法
5032
查看次数

为什么 WebKit 在 cron 中启动时不起作用,但在终端中启动时起作用?

我正在playwright使用 Ubuntu 18.04 在 VPS 上的 WebKit、Firefox 和 Chromium 上启动脚本。在我的 VPS 上使用绝对路径,如果我像这样在终端中键入它,所有三个启动并正常运行cd /home/me/desktop/myCode && /usr/bin/npm run webkit > /home/me/desktop/errors.log 2>&1。这让我觉得我已经从这里正确安装了所有依赖项:https : //github.com/microsoft/playwright/blob/master/docs/docker/Dockerfile.bionic

但是,当我使用完全相同的脚本但通过 cron 时,Firefox 和 Chromium 启动并正常运行,但 Webkit 版本启动(它在启动 WebKit 之前执行异步请求并发生这种情况),但是当 WebKit 尝试启动它时,它会导致整个程序失败. cron 脚本如下所示:

8 14 * * * cd /home/me/desktop/myCode && /usr/bin/npm run webkit > /home/me/desktop/errors.log 2>&1

错误如下所示:

events.js:292 
      throw er; // Unhandled 'error' event
      ^

Error: spawn ldconfig ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:267:19)
    at onErrorNT (internal/child_process.js:469:16)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
Emitted 'error' event …
Run Code Online (Sandbox Code Playgroud)

cron webkit playwright

1
推荐指数
1
解决办法
198
查看次数

playwright-python 高级设置

我正在尝试为与我的 selenium 设置类似的 python 使用 playwright 进行自定义设置,但是我对 Node.js 一点也不熟悉,我能找到的唯一有用的指南是:https : //playwright.dev/ #version=v1.4.2&path=docs%2Finstallation.md&q=skip-browser-downloads

所以我的问题是:如果我只想安装带有自定义 chrome 路径的 chrome 库(我需要使用特定的 chrome 版本),我该如何使用 pip 安装?节点指南使用环境变量。它们也适用于 pip 吗?

PS:pip search playwright没有显示playwright-chrome在上面链接提到的搜索结果中。

python web-testing playwright playwright-python

1
推荐指数
1
解决办法
1507
查看次数

如何在 Puppeteer 中双击

我有一个工作区,可以在其中添加不同的对象。有一种场景,双击时可以在工作区中自动添加一个对象。我尝试过不同的解决方案,但没有一个真正有效。

这是我尝试过的:

await page.evaluate(selector => {
  var targLink = document.querySelector(selector);
  var clickEvent = document.createEvent('MouseEvents');
  clickEvent.initEvent('dblclick', true, true);
  targLink.dispatchEvent(clickEvent);
}, selector)
Run Code Online (Sandbox Code Playgroud)

javascript puppeteer playwright

1
推荐指数
1
解决办法
7693
查看次数

如何验证剧作家中的代理

我的剧作家浏览器选项中有这个参数,'--proxy-server=endpoint:port'我可以使用await page.authenticate({username, password});. 我找不到任何方法可以与剧作家进行相同的操作。我怎么做?

node.js puppeteer playwright

1
推荐指数
1
解决办法
7903
查看次数

使用 Playwright devices api 可以使用哪些设备?

在哪里可以找到可用于 Playwright 测试模拟的设备的完整列表

playwright

1
推荐指数
1
解决办法
8092
查看次数

剧作家等待自定义事件

我在 Python 中使用 Playwright,我想将 javascript 注入到一个页面中,该页面监视 DOM 突变并触发自定义事件,并在 Python 中捕获这些事件。

这是一个 Python 脚本示例:

page.evaluate("//js code that essentially dispatches new CustomEvent('newPosts')")
page.on("newPosts", handle_posts)
Run Code Online (Sandbox Code Playgroud)

到目前为止,Python 端没有任何反应,就好像事件不存在一样。

如果我手动检查浏览器控制台,我可以看到事件在浏览器端触发得很好(我正在捕捉它)document.addEventListener('newPosts', fn)

python webautomation dom-events playwright playwright-python

1
推荐指数
1
解决办法
2948
查看次数

Playwright 仅从指定文件夹运行测试并忽略所有其他测试

给出以下目录结构...

- /src/__mocks__
  - X.spec.tsx <-- mock test
  - Y.spec.tsx <-- mock test
  - Z.spec.tsx <-- mock test
- /src/e2e_tests <-------------- only run the tests inside this directory
  - X.spec.tsx <-- end-to-end test
  - Y.spec.tsx <-- end-to-end test
  - Z.spec.tsx <-- end-to-end test
- /src/components
  - A.tsx
  - A.spec.tsx <-- unit test
  - B.tsx
  - B.spec.tsx <-- unit test
  - C.tsx
  - C.spec.tsx <-- unit test
- /src/views
  - X.tsx
  - X.spec.tsx <-- unit test
  - Y.tsx
  - Y.spec.tsx <-- …
Run Code Online (Sandbox Code Playgroud)

reactjs playwright

1
推荐指数
1
解决办法
7710
查看次数

如何在 Playwright 测试中指定目标项目(平台)

桌面版和移动版有不同的 UI 版本,我正在努力专门针对移动版进行某些测试,同时强制其余测试仅针对桌面版运行。除了现有的浏览器之外,我还添加了一个移动目标,如下所示:

{
    name:  'mobile',
    use: {
        ...devices['iPhone 12'],
        viewport: {
            width:  390,
            height:  844
        },
        headless:  false,
        video:  'on-first-retry'
    },
},
Run Code Online (Sandbox Code Playgroud)

这是正确运行模拟指定移动目标的测试。问题是它会尝试使用此配置进行每个测试,而我需要它只为移动设备运行指定的测试。

我能想到实现该目标的唯一方法是创建两个单独的项目。有没有更好的“可配置”方式?

mobile platform playwright

1
推荐指数
2
解决办法
956
查看次数

剧作家按下一个元素选择按钮

<div class="mysel">
   <button class="btn"></button>
   <div class="iconName">James</div>
</div>
<div class="mysel">
   <button class="btn"></button>
   <div class="iconName">John</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想按 James 的条件单击按钮,所以我尝试按此使用选择器

 page.locator('button:right-of(:text("james")').click();
Run Code Online (Sandbox Code Playgroud)

但失败了,我如何在下一个 div 中通过 txt 选择按钮?

css unit-testing selector playwright

1
推荐指数
1
解决办法
871
查看次数