对我来说这是一个令人烦恼的错误。 我正在尝试使用硒来查找元素,但是有时我会得到表达式不是合法的表达式错误-即使直接从浏览器复制并粘贴XPATH(并转义所有单引号)也是如此。

为什么会这样呢? 我直接从网页复制XPATH。

谢谢你的帮助!

例如。 根据XPath Helper:这是youtube搜索中第一个结果的标题的XPATH:

/html[@class='guide-pinned show-guide no-focus-outline']/body[@id='body']/div[@id='body-container']/div[@id='page-container']/div[@id='page']/div[@id='content']/div[@class='branded-page-v2-container branded-page-base-bold-titles branded-page-v2-container-flex-width']/div[@class='branded-page-v2-col-container']/div[@class='branded-page-v2-col-container-inner']/div[@class='branded-page-v2-primary-col']/div[@class='   yt-card  clearfix']/div[@class='branded-page-v2-body branded-page-v2-primary-column-content']/div[@id='results']/ol[@id='section-list-961996']/li/ol[@id='item-section-948865']/li[1]/div[@class='yt-lockup yt-lockup-tile yt-lockup-video vve-check clearfix yt-uix-tile']/div[@class='yt-lockup-dismissable']/div[@class='yt-lockup-content']/h3[@class='yt-lockup-title']/a[@class='yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 yt-uix-sessionlink     spf-link ']

这是我获取XPATH的方法

我知道这种方法不一定是通用方法,但是我期望它至少可以在完全匹配的情况下起作用。

在python中,我的代码是:

first_result_xpath = #the XPATH above with single quotes escaped

try:
    first_result_element = driver.find_element(By.XPATH, first_result_xpath)
except:
    print "Exception: Could not locate element"

===============>>#1 票数:1

我不完全确定xpath选择器出了什么问题。 它看起来很有效,尽管由于两个问题它不是一个好的选择器:
1.页面结构可能会更改,并使选择器无效。
2.选择器的这一部分/ol[@id='item-section-948865']可能是在加载页面时生成的。

可以使用的更好的选择器如下:

(//a[@class='yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 yt-uix-sessionlink     spf-link '])[1]

这将返回//a[@class=""]选择器的第一个结果。 使用()[n]将返回()选择器的第n个结果。

为简洁起见,此xpath选择器还可以查找搜索结果的第一个链接:

(//a[contains(@class,'yt-uix-tile-link')])[1]

  ask by newbie translate from so

未解决问题?本站智能推荐:

4回复

selenium xpath表达式的语法错误

我正在构建一个selenium findElement by.xpath表达式,非常复杂,似乎存在语法错误。 我真的不懂XML语言,所以我明显犯了错误,有人能告诉我哪里有错误吗? :) 谢谢! 我在网页上有一个项目列表,每个项目都有子项目,我想要一个特定的项目,我知道name
2回复

Selenium-错误:该表达式不是xpath的合法表达式

在网站[ https://javapapers.com/core-java/java-qr-code/]中,如果我在浏览器中搜索xpath以下的元素 我得到两个匹配项,但是如果我在硒代码中使用相同的东西 我得到以下错误: 那么我的Xpath有什么问题?
2回复

xpath表达式的结果是对象,应该是元素

我是抓取网站的新手,而且我一直在尝试使用python抓取Google图片(最终是制作一个不和谐的bot,但这无关紧要)。 我执行了以下代码以将图像src的内容存储为列表,以便可以选择索引并显示图像(我使用xpath helper chrome扩展对其进行了测试,并返回了所需的内容):
2回复

使用'or'运算符和函数创建简单的xpath表达式

我可以使以下xpath表达式更简单: 上面的工作还不错,但是时间长了,也许有一个绝妙的方法。 我在考虑是否可以只将此函数放一次: 这是可能的? 还是有其他方法?
1回复

如何使用许多OR替代方法缩短长XPath表达式?

我正在努力让Selenium经历大量的替代条件XPath,寻找可能匹配的元素 - 并将其传递给对象elmnt 。 目前,使用OR运算符( | ),代码很快就会变得非常重复和详尽,特别是当存在许多可能的变化时。 在下面的示例中,唯一的变化是我开始寻找h1 , h2或h3 。 其余的都
2回复

Selenium:表达式不是合法表达式/ Xpath

我正在玩Behat和Selenium服务器。 我正在尝试根据特定标签在文档中的位置来定位。 我使用的是AquaPath,它是一个可以与XPath一起玩的GUI,并且工作正常。 我的问题是,当我在Behat / Selenium中尝试相同的表达式时,出现了“表达式不是合法表达式”错误消息
3回复

硒简单测试说xpath不是合法表达式

我开始使用SST(简单硒测试),但是在执行似乎有效的xpath表达式'//div[div@data-type="folder-name"]'时遇到问题。 SST失败,并进行以下回溯: SST代码行是: 如果我使用selenium(来自python)而不是SST运行相同的xpat
3回复

XPath-下拉框

我是Selenium自动化测试的新手。 试图在我们的Web应用程序中找到两个下拉框的Xpath,但是还没有运气; 这是两者的HTML代码; 在下面的HTML中,我试图使用@Placeholder属性创建Xpath,该属性是唯一的。 休息都共同,但未能正确获得它; 每个下拉列表都有一组值
2回复

Selenium PHP - xpath的findElement,复杂的xpath无效

亲爱, 我遇到了以下xpath的问题,如果$ pos大于1,则不返回任何元素。 请注意,表格中包含多个div [@ class =“panel-heading”] [contains(@ action,“/ myaction?”)] 知道我的xpath有什么问题吗?
2回复

Selenium WebElement xpath Java

我试图浏览一个带有xpath的网页,我想出了一些混合的结果。 这就是我正在使用的: 这实际上很好,但我遇到的问题是: 当我在Selenium测试中运行xpath时,我总是得到第一个div。 如何编辑我的xpath以检索第4个div(92301)或其他不是列表中第一个div的d