【问题标题】:Selenium doesn't recognize element by XPathSelenium 无法通过 XPath 识别元素
【发布时间】:2020-06-20 08:27:40
【问题描述】:

我很抱歉创建一个关于这个的话题,但是这个小东西在过去的 2 个小时里一直让我难以置信。 Chrome 通过 Xpath 和 javascript 脚本返回正确的元素,但 Selenium 告诉我,在代码中,Chrome 运行良好 是一个错误:

javascript 错误:参数列表后缺少 )

这是我目前正在尝试的代码:

    driver.execute_script('let clickable = document.evaluate("//a[contains(@onclick,\"openFbLWin\")]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; clickable.click();')

我知道它有点乱,但总的来说,最重要的是 //a[contains(@onclick,\"openFbLWin\")] 至于 XPath 选择器。

【问题讨论】:

  • 你能给我们一个minimal reproducible answer吗?另外,你在抓取什么网站?
  • 您好,目前正在抓取 AddMeFast.com,即 click4click 方案网站。你期待什么样的答案? Selenium 无法通过给定的 XPath 找到元素或无法正确执行 javascript

标签: javascript python selenium google-chrome xpath


【解决方案1】:

我认为这是因为当您在 python 中运行它时,它会将"//a[contains(@onclick,\"openFbLWin\")]" 转换为"//a[contains(@onclick,"openFbLWin")]",而没有斜线。然后,当它在javascript 中运行时,它无法解析字符串,因为另一个双引号内有一个双引号。要解决此问题,请将您的 xPath 更改为 "//a[contains(@onclick,'openFbLWin')]"

不过,您应该使用selenium 的内置搜索和点击工具。它更具可读性和更快(使用find_element_by_xpathclick

【讨论】:

  • 您好,我已经尝试使用他们的内置函数(find_element_by_xpath)来执行此操作,但它也没有找到任何元素。我将尝试更深入地研究斜线。这实际上是我第一次使用 Python 做更大的事情:D 我试过 core_like = driver.find_element_by_xpath("//a[contains(@onclick,'openFbLWin')]") 但 selenium 没有返回任何元素。 (如果我尝试在 chrome 中搜索 XPath,它可以工作)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 2019-10-13
相关资源
最近更新 更多