按特定类名选择元素
Posted
技术标签:
【中文标题】按特定类名选择元素【英文标题】: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']”)。它必须完全匹配 【参考方案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 ']")
【讨论】:
以上是关于按特定类名选择元素的主要内容,如果未能解决你的问题,请参考以下文章