【问题标题】:Selenium with Python 3.5 and Chrome - failed to click element located via xpath带有 Python 3.5 和 Chrome 的 Selenium - 无法单击通过 xpath 定位的元素
【发布时间】:2018-01-05 17:25:50
【问题描述】:

我有一个脚本,可以从波兰雅芳的网站获取信息。所以基本上每个月他们都会改变价格,为了让我女儿的生活更轻松,我只需下载价格在 Excel 中查找表格。

无论如何,我有导航到该网站的脚本: https://www.avon.pl/szukaj/po-kodzie-produktu/

加载页面后,它会在搜索框中输入一个介于 00000 和 99999 之间的数字,我使用 xpath 找到该数字:

find_box_path = '//*[@id="ShopByProductNumber"]/div[2]/div[3]/div[1]/div/input'

只有部分代码是有效的,所以如果搜索成功,脚本将点击该项目,在新窗口中打开并处理信息,如果没有找到它会移动到下一个数字。该脚本检查 xpath 以确定代码是否有效。以下摘录将单击该元素并打开一个新选项卡:

#   ------------        click the product       ------------
find_item_text_element = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(find_text_path))
find_item_text_element.click()
time.sleep(0.4)

find_text_path 变量之前声明为:

find_text_path = '//*[@id="ShopByProductNumber"]/div[2]/div[3]/p/a'

有趣的是,在一年多的时间里,我的剧本就像一个魅力。就在 2 天前,脚本还在运行,我大概完成了 25000 种组合,直到它停止运行。从那时起,当脚本到达上述位置时,它会关闭并重置。我理解它为什么会重置——这是有意的——但我不知道为什么它不会点击元素。 IDE 没有显示任何错误。

我使用 XPather 来查找 xpath,上面的那个是有效的 xpath。正如我所说,直到现在它都可以正常工作。我知道网站本身可以采取措施来阻止自动化,但我没有看到问题所在。任何人都可以看到/指出问题吗?也许有一些解决方法?

Location of both elements in question

编辑:

问题已解决。我使用的 chrome 配置文件的缩放设置为 105% 而不是 100%。这会导致 webdriver 点击页面上的错误位置。

【问题讨论】:

    标签: python python-3.x google-chrome selenium xpath


    【解决方案1】:

    您能否向我们展示导致问题的特定 html 代码?我无法在网站上找到它。也许您尝试访问的元素现在包含在框架中,但我只能假设没有 html。

    【讨论】:

    • 其实我几天前就知道了。事实证明,缩放设置为 105% 而不是 100%。这会导致 webdriver 单击页面上的错误位置。我注意到在调试过程中,当我决定使用“context_click()”而不是常规的“click()”时。发现问题后应该编辑我的问题。
    猜你喜欢
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    相关资源
    最近更新 更多