python - 如何使用 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();
解决方案
使用相对 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();
推荐阅读
- javascript - 渲染并保存 300dpi 图像
- spring-boot - 如何将 spring.freemarker.template-loader-path 指向依赖项 jar 中的模板?
- json - 如何通过多级分组从 SQLite 中获取嵌套的 JSON 数据?
- html - 如何在下拉列表中设置选项的宽度?
- r - 闪亮的绘图显示在 RStudio 窗口中,而不是在浏览器中
- reactjs - 从 reduxform 回调中将 props 组件添加到 props 参数中
- python - 有没有办法在 Python 中向终端应用程序发送命令
- c++ - 根据其构成的类型的存在有条件地定义一个成员变量
- java - GPS坐标添加角度不正确的米
- c++ - 在 C++ 中从十六进制字符串转换为双精度