selenium.common.exceptions.InvalidSelectorException:消息:给定的 xpath 表达式通过 Selenium 在 scrollIntoView 中使用
Posted
技术标签:
【中文标题】selenium.common.exceptions.InvalidSelectorException:消息:给定的 xpath 表达式通过 Selenium 在 scrollIntoView 中使用 xpath 无效【英文标题】:selenium.common.exceptions.InvalidSelectorException: Message: Given xpath expression is invalid using xpath within scrollIntoView through Selenium 【发布时间】:2020-09-18 22:37:10 【问题描述】:我使用 Python 抓取一个带有需要滚动的过滤器窗格的网站。 我找到了一个有助于滚动元素列表的代码,它实际上是找到一个列表并在循环中移动。
recentList = driver.find_elements_by_xpath("/html/body/div[3]/main/div/div/div/div[1]/div/form/div[2]/fieldset[3]/div/ul/li")
for list in recentList:
driver.execute_script('arguments[0].scrollIntoView(behavior: "smooth", block: "end", inline: "nearest")', list)
我的代码已经包含一个 for 循环,我想只添加一个需要滚动到的元素。 用上面我写的逻辑(一个循环被简化):
for p in range(1,15):
list = driver.find_element_by_xpath(str('/html/body/div[3]/main/div/div/div/div[1]/div/form/div[2]/fieldset[3]/div/ul/li[[' + str(p) + ']'))
driver.execute_script('arguments[0].scrollIntoView(behavior: "smooth", block: "end", inline: "nearest")', list)
我不知道为什么它不起作用。 这是我得到的一个错误:
selenium.common.exceptions.InvalidSelectorException: Message: Given xpath expression "/html/body/div[3]/main/div/div/div/div[1]/div/form/div[2]/fieldset[3]/div/ul/li[[1]" is invalid: SyntaxError: The expression is not a legal expression.
有人知道需要修复什么吗? 最后一个代码中的 XPath 是正确的,并且已经在使用中。
我尝试将当前循环替换为“recentList 中的列表”,但是当需要滚动过滤器上的页面时,代码会停止。
【问题讨论】:
【参考方案1】:此错误消息...
selenium.common.exceptions.InvalidSelectorException: Message: Given xpath expression "/html/body/div[3]/main/div/div/div/div[1]/div/form/div[2]/fieldset[3]/div/ul/li[[1]" is invalid: SyntaxError: The expression is not a legal expression.
...暗示 XPath 表达式不是有效/合法的表达式。
如果您在错误中观察到有效的xpath,则表达式中还有一个额外的第三个括号开头:
/html/body/div[3]/main/div/div/div/div[1]/div/form/div[2]/fieldset[3]/div/ul/li[[1]
解决方案
要删除多余的第三个括号开口,您需要将xpath表达式调整为:
list = driver.find_element_by_xpath(str('/html/body/div[3]/main/div/div/div/div[1]/div/form/div[2]/fieldset[3]/div/ul/li[' + str(p) + ']'))
参考文献
您可以在以下位置找到一些相关讨论:
InvalidSelectorError: invalid selector: Unable to locate an element with the xpath expression Message “org.openqa.selenium.InvalidSelectorException: invalid selector: Unable to locate an element with the XPath expression” using sendKeys Send whatsapp message to contacts using Python but getting an error: InvalidSelectorException: Message: invalid selector: Unable to locate an element【讨论】:
谢谢!这真的很尴尬。我一个字一个字地检查了 3 次文本,我不知道我怎么会错过它。以上是关于selenium.common.exceptions.InvalidSelectorException:消息:给定的 xpath 表达式通过 Selenium 在 scrollIntoView 中使用的主要内容,如果未能解决你的问题,请参考以下文章