【问题标题】:Selecting elements by specific Class Name按特定类名选择元素
【发布时间】:2018-04-05 02:38:21
【问题描述】:

我想按类名选择元素,但只能使用特定名称(first-level-li),如果有其他类具有我要选择的名称但随后是其他名称

(<li class="first-level-li no-second-level shop-link">
<li class="first-level-li  no-second-level  ">)

,我需要忽略它们,我该怎么做? 示例:

firstLevelMenu = self.driver.find_elements_by_class_name ( "first-level-li" )

网站

<li class="first-level-li no-second-level shop-link">
<li class="first-level-li  no-second-level  ">
<li class="first-level-li  ">

【问题讨论】:

  • 你可以用 xpath 选择
  • 很遗憾,使用 by xpath (find_elements_by_xpath) 没有返回任何元素,页面中有 9 个元素。你知道原因吗?
  • 打印 len(firstLevelMenu)
  • 网址是什么?
  • @SDB 在您提供的示例 html 中,类名后面有 2 个空格。因此,要匹配的 xpath 实际上将带有 2 个空格(“//li[@class='first-level-li']”)。它必须完全匹配

标签: python selenium classname


【解决方案1】:
firstlevelMenu = self.driver.find_elements_by_xpath("//li[@class='first-level-li  ']")

文档在这里http://selenium-python.readthedocs.io/locating-elements.html

【讨论】:

  • 很遗憾,使用 by xpath (find_elements_by_xpath) 没有返回任何元素,页面中有 9 个元素。你知道原因吗?
【解决方案2】:

你可以使用 xpath 来做同样的事情:

self.driver.find_elements_by_xpath("//li[@class='first-level-li']")

这会找到具有确切类名的元素。

【讨论】:

    【解决方案3】:

    你也可以使用上面提到的xpath和下面的函数,它会直接返回特定元素的对象,而不是列表。

    self.driver.find_element_by_xpath("//li[@class='first-level-li ']")

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多