为啥一旦点击 Uber Eats 上的按钮,Playwright 就不会更改 url?

Posted

技术标签:

【中文标题】为啥一旦点击 Uber Eats 上的按钮,Playwright 就不会更改 url?【英文标题】:Why does Playwright not change url once button is clicked on Uber Eats?为什么一旦点击 Uber Eats 上的按钮,Playwright 就不会更改 url? 【发布时间】:2022-01-21 17:22:43 【问题描述】:

基本上,我想在 uber Eats 中输入一个地址,然后进入下一页。但是,我注意到一旦单击按钮,网址实际上并没有改变。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://www.ubereats.com/ca")
    print(page.title())
    page.fill("#location-typeahead-home-input", "address")
    page.keyboard.press("Enter")
    print(page.url)
    page.close()

我已经尝试通过专门定位着陆页上的“查找食物”按钮来做同样的事情。出于某种原因,这实际上并没有改变页面。 帮助将不胜感激,谢谢!

【问题讨论】:

在此报告github.com/microsoft/playwright/issues/11022 【参考方案1】:

我在 Node js puppeteer 中提出了一个解决方案,我认为它在 python 中的工作方式相同。至于为什么没有按下按钮,我不知道。但是,输入地址然后单击第一个地址建议是有效的。

这是我的代码:

const puppeteer = require('puppeteer');
async function start()
    const browser = await puppeteer.launch()
    const page = await browser.newPage()
    await page.goto("https://www.ubereats.com/ca")
    await page.type("#location-typeahead-home-input", "Address")
    await page.waitForSelector('#location-typeahead-home-item-0');
    await page.click("#location-typeahead-home-item-0")
    await page.waitForNavigation()

    console.log(page.url())
    await browser.close()


start()

【讨论】:

【参考方案2】:

页面有一个错误,如果您输入地址太快并在对话框出现之前按Enter,它将无法导航。见this comment。

【讨论】:

以上是关于为啥一旦点击 Uber Eats 上的按钮,Playwright 就不会更改 url?的主要内容,如果未能解决你的问题,请参考以下文章

如何从自定义 Android 应用程序启动 uber eats 应用程序

我想启动 UBER/LYFT 应用程序以使其从我的应用程序进入前台

我的ASP.NET 程序点击按钮为啥没有反应?

如何隐藏/禁用软键盘 android 上的完成按钮?

如何在点击Vaadin画布上的提交按钮时填写文本?

为啥 lyft 和 uber 移动 web api 都需要目的地的纬度/经度