首页 > 解决方案 > 如何使用 Selenium 在元素的父元素中查找元素

问题描述

我的目标是通过文本(在本例中为按钮)查找元素,然后导航到包含此按钮的 div,然后在该 div 中查找并单击另一个元素(列表标题)。

我的预期结果是程序会在页面中找到一个带有文本“添加到购物车”(如果有的话)的元素,导航到父 div,然后在该 div 中搜索一个名为“title”的类并单击它。实际行为略有不同。该程序将找到一个按钮,导航到其父级,但随后它似乎只是在整个页面中搜索标题元素并选择第一个。

我的问题是:我如何只搜索我存储为特定类的变量的 div。

inStockButton = driver.find_element_by_xpath('//button[text()="Add to Basket"]')
inStockButtonParent = inStockButton.find_element_by_xpath('//span/ancestor::div[1]')
productToClick = inStockButtonParent.find_element_by_xpath('//*/div[1]/h3/a')
productToClick.click();

标签: pythonseleniumxpath

解决方案


使用相对 xpath:

inStockButton = driver.find_element_by_xpath('//button[text()="Add to Basket"]')
inStockButtonParent = inStockButton.find_element_by_xpath('.//span/ancestor::div[1]')
productToClick = inStockButtonParent.find_element_by_xpath('.//*/div[1]/h3/a')
productToClick.click();

推荐阅读