【问题标题】:Unable to click popup elements even after scrolling down python selenium即使向下滚动 python selenium 后也无法单击弹出元素
【发布时间】:2021-10-28 06:52:01
【问题描述】:

我正在尝试在此网站https://www.just-eat.co.uk/restaurants-mcdonalds-victorialondon/menu 上选择添加项目到一顿饭中。但是,我已经尝试了一切 - Actionchains,等待元素可点击和 ScrollIntoView,但没有任何效果。我也尝试过最大化窗口。有时我会收到一个错误,指出该元素无法点击,因为它被弹出窗口的顶部或底部挡住了,其他时候我只是收到错误无法找到该元素。

这是弹出窗口之一的屏幕截图

有些元素需要在“添加到订单”按钮可点击之前被点击,我正在通过匹配文本来搜索元素 browser.find_element_by_xpath(f'//span[text()="{element_text}"]')

例如,我通过以下方式选择“Pancakes & Sausage Meal”(提供的餐食因一天中的时间而异):browser.find_element_by_xpath('//h3[text()="Pancakes & Sausage Meal"]').click(),然后尝试通过执行browser.find_element_by_xpath('//span[text()="Regular Latte"]').click() 来点击“Regular Latte”,但这并没有工作 - 我尝试使用 ActionChains 并在单击之前滚动到元素。

enter code here

谢谢

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    您必须先在此处关闭 cookie 弹出窗口。
    为了接受 cookie,您应该单击位于 button[data-test-id="accept-all-cookies-button"] css 选择器的元素。
    在预期条件显式等待的情况下,它将是:

    wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'button[data-test-id="accept-all-cookies-button"]'))).click()
    

    UPD
    在添加到订单弹出窗口中,您必须选择几个必需的选项才能启用“添加到订单”按钮。启用该按钮后,您可以单击它

    button[data-test-id="add-to-basket"]
    

    css 选择器。
    在预期的条件下,它将是

    wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'button[data-test-id="add-to-basket"]'))).click()
    

    【讨论】:

    • 这不是问题,我在浏览网站时很容易清除了 cookie 按钮。您是否设法在弹出窗口中选择了一个附加项目?
    • 你没有在问题中提到...查看更新的答案
    • 也许我还不够清楚,我遇到的问题是单击所需的选项。例如,我通过以下方式选择“Pancakes & Sausage Meal”: browser.find_element_by_xpath('//h3[text()="Pancakes & Sausage Meal"]').click() 然后尝试单击“Regular Latte” " 通过执行 browser.find_element_by_xpath('//span[text()="Regular Latte"]').click() 但这不起作用 - 我尝试使用 ActionChains 并在单击之前滚动到元素。 (您选择的餐点和添加取决于用户输入,但我已在此处对其进行硬编码以作为示例)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    相关资源
    最近更新 更多