事实上,我可以使用此XPath找到我想要的确切元素:
//table[@class="summary-table"]/tbody/tr/*/*/*/a[contains(@class, "snippet-title")]
我知道这是因为我有一个突出显示的XPath插件 检测到的元素。
我想将此元素遍历分为两部分。首先
part返回tr
个单元格的列表,第二个部分进行搜索
每个感兴趣的tr
中的每个a
单元格。
返回tr
单元格的第一部分已编写并正在运行:
@property
def product_elements(self):
xpath = '//table[@class="summary-table"]/tbody/tr'
elems = self.driver.find_elements_by_xpath(xpath)
return elems
但是,我在代码中尝试了各种XPath和css选择器 下面:
@property
def product_names(self):
xpath = '//a[contains(@class, "lc-snippet-title")]'
for product_elem in self.product_elements:
elem = product_elem.find_element_by_css_selector('.lc-snippet-title')
logging.debug("Found this element {0}".format(
self.pretty_printer.pformat(elem)))
yield elem.text
并且没有任何工作可以在a
内找到我想要的tr
WebDriver元素。
由于a
中有多个tr
标记,我必须找到
一个我想要的class属性。
答案 0 :(得分:1)
我不完全了解CSS选择器,但是如果你有一个带有xpath //table[@class="summary-table"]/tbody/tr
的WebElement并且它有一个子//a[contains(@class, "lc-snippet-title")]
,那么下一个代码对我来说就可以了:
element = driver.find_element_by_xpath("//table[@class="summary-table"]/tbody/tr")
child = element.find_element_by_xpath(".//a[contains(@class, "lc-snippet-title")]")
整个点位于子元素的XPath定位符开头的.
中,表示它实际上是一个子元素。试试这个
答案 1 :(得分:0)
鉴于信息: XPath:// table [@class =" summary-table"] / tbody / tr / / / * / a [contains(@class," snippet-title& #34)]
第1步:
让我们将上面的XPath转换为CSS Selector for Performance。
的XPath://表[@class ="总结表"] / tbody的/ TR CSS:css = table.summary-table a.snippet-title> tbody> TR
第2步: 然后我们可以通过以下方法找到CSS Count
@属性
def product_elements(self):
css =' css = table.summary-table> tbody> TR'
elems = self.driver.find_elements_by_by_css_selector(css)
返回元素
@属性
def product_names(self):
for product_elem in self.product_elements:
elem = product_elem.find_element_by_css_selector('.lc-snippet-title')
logging.debug("Found this element {0}".format(
self.pretty_printer.pformat(elem)))
yield elem.text