【问题标题】:Python Webdriver -unexpected EOF while parsing (<string>, line 1)Python Webdriver - 解析时出现意外的 EOF(<string>,第 1 行)
【发布时间】:2016-07-29 03:29:55
【问题描述】:

我正在使用 Python 和 webdriver

我正在尝试使用 xpath 查找元素并获取:“解析时意外 EOF (, line 1)”

当我尝试通过查找具有类名的元素来定位它时,它运行良好。

问题是我不能使用它,因为我有几个同名的类。

这里是 xpath:

//*[@id="j_id0:j_id5:j_id6:j_id36"]/div/div/div[2]/div[2]/div[2]/ul/li[1]/div/svg/g/g[1]/path[1]

这是类名:st0

这是我的代码行:

ss = self.SELENIUM_DRIVER.find_element_by_xpath('//*[@id="j_id0:j_id5:j_id6:j_id36"]/div/div/div[2]/div[2]/div[2]/ul/li[1]/div/svg/g/g[1]/path[1]')

-这不起作用

ddd = self.SELENIUM_DRIVER.find_element_by_class_name('st0')

-哪个有效

这是html:

提前致谢

【问题讨论】:

  • 您的实际 HTML 可能更大(包含div、ul 和其他标签)。如果您的整个 HTML 只是一个 &lt;path ...&gt;&lt;/path&gt;,那么您可以使用 xpath //path[1]。如果可行,您可以向 HTML 添加越来越多的标签,并使 xpath 更长,直到它停止工作。从中您知道 xpath 的哪个部分有错误。如果您仍然无法弄清楚如何修复错误,请将其添加到问题中,如下所示:xpath ... 有效,xpath ... 导致错误。
  • 顺便说一句,这是一个非常可怕的 XPath。如果你在测试中使用它,它肯定会很脆。
  • 对不起,我没听懂你的建议。你是说设置 xpath //path[1] 就这样吗?
  • 我试图将 xpath 设置为 //path[1] 但它不起作用
  • @ohad 试试这个 xpath //*[@id = 'j_id0:j_id5:j_id6:j_id36']/descendant::path[1]..然后告诉我..

标签: python selenium-webdriver


【解决方案1】:

以下查询将查找path,其父树为div/svg/g/g[1],类等于st0,索引为[1]:

self.SELENIUM_DRIVER.find_element_by_xpath('//div/svg/g/g[1]/path[@class=st0][1]')

如果父树从以前开始是唯一的,最好缩短查询,例如:

self.SELENIUM_DRIVER.find_element_by_xpath('//g/g[1]/path[@class=st0][1]')

【讨论】:

  • 嗨。以上都不起作用:(。想提一下我要找的元素是图片\多边形。有关系吗?
【解决方案2】:

我认为这是您提供的 ID j_id0:j_id5:j_id6:j_id36 的问题,正如您所说的其他一些元素的类名也相同,因此您应该尝试通过传递索引来使用 xpath,如下所示:-

self.SELENIUM_DRIVER.find_element_by_xpath('(//path[@class=st0])[1]')

现在您只需更改索引值即可找到您想要的元素。

希望它有效...:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-21
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2017-10-03
    相关资源
    最近更新 更多