Typescript 我没有在Puppeter上获得正确的脚本,在UI中等待数据加载到下拉列表中
我使用了一个等待已久的页面延迟(8000)来确保下拉框中的所有数据都已加载。我假设必须有一种方法等待下拉框中的所有数据被加载,然后自动化进入下一步 我尝试对选择器使用验证,但无法对查询中填充的动态数据进行验证。我还尝试使用等待页面。延迟(n),但这不是正确的方法,因为有时运行查询可能需要一些时间Typescript 我没有在Puppeter上获得正确的脚本,在UI中等待数据加载到下拉列表中,typescript,automation,jestjs,ui-automation,puppeteer,Typescript,Automation,Jestjs,Ui Automation,Puppeteer,我使用了一个等待已久的页面延迟(8000)来确保下拉框中的所有数据都已加载。我假设必须有一种方法等待下拉框中的所有数据被加载,然后自动化进入下一步 我尝试对选择器使用验证,但无法对查询中填充的动态数据进行验证。我还尝试使用等待页面。延迟(n),但这不是正确的方法,因为有时运行查询可能需要一些时间 page.click(selectors.xxx.nnn) await delay (1000) page.keyboard.type('abc') await delay(80
page.click(selectors.xxx.nnn)
await delay (1000)
page.keyboard.type('abc')
await delay(8000)
page.keyboard.press('ArrowDown')
page.keyboard.press('ArrowDown')
page.keyboard.press('Enter')
因此,使用延迟可以是一个解决方案,但不是一个合适的解决方案。如果有什么方法可以让Puppeter中的浏览器自动化等待,不是等待选择器,而是等待来自后端的数据。最好确保下拉列表中的所有预期列表都已填充并且可以选择。您可以使用等待,直到特定函数返回true。在您的情况下,您可以计算下拉框的选项。我假设“下拉框”是一个简单的…
HTML元素
代码示例
wait page.waitForFunction(()=>document.querySelector(“#selectbox的id”)。长度>0;
由于选择框上的length
属性返回框内的选项数,因此此代码将等待选择框内至少有一个选项后再继续操作。您可以使用该属性等待特定函数返回true。在您的情况下,您可以计算下拉框的选项。我假设“下拉框”是一个简单的…
HTML元素
代码示例
wait page.waitForFunction(()=>document.querySelector(“#selectbox的id”)。长度>0;
由于选择框上的
length
属性返回其中的选项数,因此此代码将等待选择框中至少有一个选项后再继续操作。等待页面。waitForResponse(response=>response.status()==200)
或
wait page.waitForResponse(response=>response.ok())
这两种方法都允许自动操作等待所有响应成功
wait page.waitForResponse(response=>response.status()==200)
或
wait page.waitForResponse(response=>response.ok())
这两种方法都允许自动化等待所有响应成功看起来我们可以使用
wait page.waitForNavigation({waitUntil:'networkidle0'})
,它等待所有网络调用完成,但由于某种原因它不会进入下一步。接下来我尝试使用response.ok()
函数,但这只适用于一个请求,而在我的情况下,我有两个请求,一个是飞行前请求。有什么想法吗?@DenishSwaitForNavigation
实际上会等待页面导航(而不是请求)。我刚才还概述了使用waitForResponse
方法的方法。这对你有帮助吗?在经历了数小时的不同尝试之后,page.waitForResponse(response=>response.status()==200)为我找到了答案。因此,如果所有请求都成功且响应成功状态为200,那么现在我的自动化将继续下一步。看起来我们可以使用wait page.waitForNavigation({waitUntil:'networkidle0'})
,它将等待所有网络调用完成,但由于某种原因,它不会进入下一步。接下来我尝试使用response.ok()
函数,但这只适用于一个请求,而在我的情况下,我有两个请求,一个是飞行前请求。有什么想法吗?@DenishSwaitForNavigation
实际上会等待页面导航(而不是请求)。我刚才还概述了使用waitForResponse
方法的方法。这对你有帮助吗?在经历了数小时的不同尝试之后,page.waitForResponse(response=>response.status()==200)为我找到了答案。因此,如果所有请求都成功且响应成功状态为200,那么现在我的自动化将继续到下一步。
await page.waitFor(selectors.xxx.nnn)
page.click(selectors.xxx.nnn)
await page.waitFor(selectors.xxx.abc)