为啥一旦点击 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 应用程序