- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将 scrapy 与 playwright 集成,但发现自己在点击后添加计时器时遇到了困难。因此,当我在点击后对页面进行截图时,它仍然卡在登录页面上。
我如何集成一个计时器,让页面等待几秒钟直到页面加载?
import scrapy
from scrapy_playwright.page import PageCoroutine
class DoorSpider(scrapy.Spider):
name = 'door'
start_urls = ['https://nextdoor.co.uk/login/']
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(
url=url,
callback = self.parse,
meta= dict(
playwright = True,
playwright_include_page = True,
playwright_page_coroutines = [
PageCoroutine("click", selector = ".onetrust-close-btn-handler.onetrust-close-btn-ui.banner-close-button.onetrust-lg.ot-close-icon"),
PageCoroutine("fill", "#id_email", 'my_email'),
PageCoroutine("fill", "#id_password", 'my_password'),
PageCoroutine('waitForNavigation'),
PageCoroutine("click", selector="#signin_button"),
PageCoroutine("screenshot", path="cookies.png", full_page=True),
]
)
)
def parse(self, response):
yield {
'data':response.body
}
最佳答案
根据您的特定用例,您可以使用许多waiting
方法。以下是示例,但您可以从 docs 中阅读更多内容
wait_for_event(event, **kwargs)
wait_for_selector(selector, **kwargs)
wait_for_load_state(**kwargs)
wait_for_url(url, **kwargs)
wait_for_timeout(超时
对于你的问题,如果你需要等到页面加载,你可以使用下面的协程并将其插入列表中的适当位置:
...
PageCoroutine("wait_for_load_state", "load"),
...
或
...
PageCoroutine("wait_for_load_state", "domcontentloaded"),
...
如果以上两种方法不起作用,您可以尝试任何其他 wait
方法,或者您可以使用明确的超时值,如 3 秒。(不推荐这样做,因为它会更频繁地失败并且在网络抓取时不是最佳的)
...
PageCoroutine("wait_for_timeout", 3000),
...
关于scrapy - 如何添加剧作家的等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71189141/
当尝试将 page.SelectOption 与 Playwright 一起使用时,我遇到了一个问题,即我选择的值未被选中,无论我使用索引、值还是标签来尝试选择都没有关系。 我知道正在找到选择器,因为
背景 我有一个在 Azure DevOps 管道中运行 Playwright 集成测试的 React/TypeScript 项目。管道从 Azure DevOps 库获取环境变量。 问题 我可以在本地
我正在尝试为该网站编写登录功能: 这是我的代码: const { chromium, firefox, webkit } = require('playwright'); (async () => {
我正在尝试使用 Playwright (.NET) 抓取网站。该网站看起来像是在 2000 年代初期编写的(以怪癖模式和所有模式运行),我遇到了一个我似乎无法找到解决方案的问题。 我的目标是选中一个复
我正在使用 Playwright 来定位所有 option 角色,如下所示: const autocompleteItem = page.getByRole('option'); 现在我只想检查它是否
我正在使用 Playwright 来定位所有 option 角色,如下所示: const autocompleteItem = page.getByRole('option'); 现在我只想检查它是否
使用 puppeteer 时,我曾经通过使用以下代码行来获取新选项卡: const browser = await puppeteer.launch() const [page] = await br
所以我编写了一个函数,它可以简单地单击一个常见问题解答按钮并验证新选项卡是否在同一浏览器上下文中打开。我在运行测试时遇到的问题是: TypeError: Cannot read property 't
我正在尝试从 Selenium 转移到 Playwright 以执行一些网络抓取任务。 也许我养成了让 Selenium 一边运行浏览器一边测试运行中的命令和选择器的坏习惯。 有没有什么方法可以使用
我刚刚安装了 playwright (v1.18.1) 来试用 (Windows 11),但我觉得有些不对劲。我可以很好地运行 example.spec.ts 脚本,但是如果我复制该文件然后尝试运行副
我已登录网页,使用 puppeteer/playwright 导航到目标网页,并希望下载带有请求的 csv 文件。 请求 header 包括授权:“Bearer eyJ0eXAiOiJKV .....
我是一名优秀的程序员,十分优秀!