我正在使用selenium,我希望获得带有"find_elements_by_xpath“的html标记的"id”,但我得到了以下错误:
selenium.common.exceptions.InvalidSelectorException:消息:无效选择器: xpath表达式“// Attr包含(@class,‘de’)/div/div(@class,‘容器-流体默认值’)/sectioncontains(@id,'mainContent')/divcontains(@class,'row-fluid')/divcontains(@id,'contentContainer行-流体‘)/divcontains(@class,'content')/divcontains(@class,’se‘)/ul/li/@id”的结果是: object Attr。它应该是一个元素。
当我执行此代码时:
browser.find_elements_by_xpath("//body[contains(@class,'de')]/div/div[contains(@class,'container-fluid default')]/section[contains(@id,'mainContent')]/div[contains(@class,'row-fluid')]/div[contains(@id,'contentContainer row-fluid')]/div[contains(@class,'content')]/div[contains(@class,'ses')]/ul/li/@id")虽然没有"/@id“的相同代码工作得很好,但我只有"li”标记中的文本,这不是我想要的。
根据错误,问题来自Xpath。
我原以为这段代码会返回"li“html标记中的所有"id”,但我得到了错误。
谢谢你的帮助
发布于 2019-06-18 09:41:37
@id是一个属性,而不是一个元素。XPath是OK的,但是函数只返回元素,而不是属性。我怀疑是否存在find_attributes_by_xpath,但是如果您想找到定义了@id的li元素,可以在量词中指定:
browser.find_elements_by_xpath("//body[contains(@class,'de')]
/div/div[contains(@class,'container-fluid default')]
/section[contains(@id,'mainContent')]
/div[contains(@class,'row-fluid')]
/div[contains(@id,'contentContainer row-fluid')]
/div[contains(@class,'content')]
/div[contains(@class,'ses')]/ul/li[@id]")
~~~~~然后,可以调用element.get_attribute('id')来检索元素的id。
https://stackoverflow.com/questions/56645904
复制相似问题