【问题标题】:How to click a menu item from mobile based website in selenium Python?如何在 selenium Python 中单击基于移动网站的菜单项?
【发布时间】:2021-02-06 18:36:58
【问题描述】:

所以,我正在为 Google Play 商店(来自计算机的网站)做一些自动化操作。

这是我要点击的元素。

这是当我们点击评论一侧的 3 个点时打开的菜单。然后我必须单击这 3 个菜单选项之一。我无法在这三个项目中的任何一个上使用 .click() 函数。 menu 的所有这 3 个 span 元素都包含在一个 div 父级中。

当我使用时

element = driver.find_element_by_xpath('/html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div/main/div/div[1]/div[3]/div/div[2]/div[1]/div[2]/div/div[2]/div[2]/div/div/div/span[2]/div[2]')
element.click()

它给出:

ElementNotInteractableException: Message: Element <div class="uyYuVb oJeWuf"> could not be scrolled into view

我尝试单击跨度,以及它的子元素,例如具有display:flex 的 div 也是最后一个 div 子元素。但他们都给出了同样的例外。我知道 Play Store 主要用于移动设备,因此它显示了移动元素的属性。那么点击这三个选项中的任何一个的合适方法是什么?

这里是link

【问题讨论】:

    标签: python python-3.x selenium web-scraping automation


    【解决方案1】:

    我认为使用 selenium 无法单击像这样的跨度。但是我认为您应该尝试在屏幕上获取此跨度的位置,以便您可以使用 pyautogui 之类的模块单击它:

    import pyautogui
    pyautogui.click(x=positionx, y=positiony)
    

    这是我找到的唯一解决方案,我希望您不必在程序中花费大量时间,因为它重复且烦人(查找 x 和 y 位置)

    【讨论】:

    • 这个跨度的位置可能会随着窗口大小而变化,即使是最轻微的变化也可能会以这种方式破坏代码,你的意思是我们必须对位置的值进行硬编码,对吧?没有其他方法可以模拟单击该菜单项的行为吗?
    • 如果跨度位置随窗口大小而变化,您应该尝试最大化窗口大小(全屏),使其始终位于同一点。 stackoverflow.com/questions/12211781/…
    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多