我正在尝试提取 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我正在使用的代码是:
\nelement_handle = page.locator('//div[@class="item-info-container "]//a').all_inner_texts()\n
Run Code Online (Sandbox Code Playgroud)\n无论我是否指定//a[@href],我的输出始终是标题文本:
\nApartamento 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当我真正想要实现的是: …
我正在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) 我正在尝试为与我的 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
在上面链接提到的搜索结果中。
我有一个工作区,可以在其中添加不同的对象。有一种场景,双击时可以在工作区中自动添加一个对象。我尝试过不同的解决方案,但没有一个真正有效。
这是我尝试过的:
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) 我的剧作家浏览器选项中有这个参数,'--proxy-server=endpoint:port'
我可以使用await page.authenticate({username, password});
. 我找不到任何方法可以与剧作家进行相同的操作。我怎么做?
在哪里可以找到可用于 Playwright 测试模拟的设备的完整列表
我在 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
给出以下目录结构...
- /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) 桌面版和移动版有不同的 UI 版本,我正在努力专门针对移动版进行某些测试,同时强制其余测试仅针对桌面版运行。除了现有的浏览器之外,我还添加了一个移动目标,如下所示:
{
name: 'mobile',
use: {
...devices['iPhone 12'],
viewport: {
width: 390,
height: 844
},
headless: false,
video: 'on-first-retry'
},
},
Run Code Online (Sandbox Code Playgroud)
这是正确运行模拟指定移动目标的测试。问题是它会尝试使用此配置进行每个测试,而我需要它只为移动设备运行指定的测试。
我能想到实现该目标的唯一方法是创建两个单独的项目。有没有更好的“可配置”方式?
<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 选择按钮?
playwright ×10
python ×3
puppeteer ×2
cron ×1
css ×1
dom-events ×1
javascript ×1
mobile ×1
node.js ×1
platform ×1
reactjs ×1
selector ×1
unit-testing ×1
web-scraping ×1
web-testing ×1
webkit ×1
xpath ×1