【问题标题】:How to know which element receives the click()?如何知道哪个元素收到了 click()?
【发布时间】:2021-04-19 18:34:08
【问题描述】:

我正在编写一个脚本,该脚本会转到亚马逊 URL 并单击“立即购买”按钮。而已。我必须使用 WebdriverIO、javascript 和 ChromeDriver。问题是无论我使用哪个选择器,我都无法点击这个按钮。我可以手动完成它。但是在下面的代码检查中,div/id/name、span/id/close 或 input/id/name 的每个组合都导致没有点击。我知道脚本可以看到该 Web 对象,因为当我对控制台执行 BuyNow.getText() 时,它会打印出“立即购买”。而且我知道我使用的 xpath 很好,因为我将它粘贴到 Inspect/Find 中,并且确切的元素会亮起黄色。哦,.click(),即使 Visual Studio Code 标记为已弃用,在以前的脚本中也能正常工作。

当我手动点击一个按钮时,有没有办法查看收到此点击的确切元素是什么?

        let BuyNow = $(<XPATH>)
        BuyNow.click()

Code Inspect

【问题讨论】:

  • 嗨。欢迎来到 SO。根据您提供的信息,这将是一个包含 21 个问题的漫长游戏。请您看一下tour,并提供minimal reproducible example,以便我们为您提供帮助。
  • 我不明白这会是一个 21 个问题的漫长游戏。查看 Code Inspect 图片,这是与 Amazon Buy Now 按钮相关的一小段代码。每个产品都是一样的。为什么即使我对每一行都做了正确的 XPATH,并将其放在声明按钮代码中,WebdriverIO 却永远无法单击它?最后,是否有一种简单的方法可以确定哪一行代码负责单击按钮?

标签: selenium-webdriver selenium-chromedriver


【解决方案1】:

好的,所以我发现了问题所在。它与我的 XPATH 选择器无关,其中任何一个对代码检查图片中的元素都有效(例如:let BuyNow = *[id='buy-now-button'])。问题是在 WDIO 配置文件中,我使用了自定义 Chrome 配置文件。这很好,我使用的 Chrome.exe 指向另一个自定义 Chrome 配置文件。我以为这两个是一样的,但是文件夹路径搞砸了。一旦我解决了它们,并且 Chrome.Exe 和 WDIO 配置都指向同一个客户文件夹,Chrome 开始允许我选择按钮。我认为 WDIO 代码正在查看 chrome 的一个用户配置文件,而我使用的桌面 chrome 浏览器是另一个用户配置文件。

解决了。有趣的东西,但不是真的。

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2021-08-25
    • 1970-01-01
    相关资源
    最近更新 更多