我很抱歉创建一个关于此的主题,但这件小事在过去的两个小时里一直困扰着我。 Chrome 通过 Xpath 以及 javascript 脚本返回正确的元素,但 Selenium 告诉我,在代码中,Chrome 运行得很好是一个错误:
javascript error: missing ) after argument list
这是我当前正在尝试的代码:
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 选择器。
最佳答案
我认为这是因为当你在 python 中运行它时,它会将 "//a[contains(@onclick,\"openFbLWin\")]"
转换为 "//a [contains(@onclick,"openFbLWin")]"
,不带斜杠。然后,当它在 javascript
中运行时,它无法解析该字符串,因为另一个双引号内有一个双引号。要解决此问题,请将您的 xPath 更改为 "//a[contains(@onclick,'openFbLWin')]"
。
不过,您应该使用selenium
的内置搜索和点击工具。它更具可读性且速度更快(使用 find_element_by_xpath 和 click )
关于javascript - Selenium 无法通过 XPath 识别元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60583775/