Selenium Python - 查找 div 包含两个特定元素

Selenium Python - Finding div containing two specific elements

我正在使用 selenium 构建一个 python 脚本,运行 遇到了一个非常令人困惑的问题。

网站列出产品时使用的名称不是唯一的,颜色也不是唯一的。 color 和 name 元素具有相同的 parent.

我的脚本让用户输入他希望脚本为他购买的产品以及颜色。

问题: 我一辈子都想不出如何使用 productName 和 productColor 这两个变量 select 正确的产品。

DOM:

<div class="inner-article">
  <h1>
    <a class="product-name">Silk Shirt</a>
  </h1>
  <p>
    <a class="product-color">Black</a>
  </p>
</div>

到目前为止我尝试过的: 显然,select在页面上找到名为 Silk Shirt 的第一个产品非常容易。我考虑过select第一个产品,然后select那个产品parent,select那个元素parent,然后select那个parents 第二个 child,检查它是否为黑色,然后继续,但是 CSS 没有 parent selector。

我该怎么做?

创建一个选择每个 div class="inner-article" 元素的主循环。

在循环中,查找具有 h1 子元素和文本为 "Silk Shirt" 的 a class=product-name 孙元素以及 p 子元素和文本为 "Black".

a class=product-color 孙元素

或许尝试使用 xpath 进行搜索。下面的 xpath 将 return 包含您想要的产品和颜色的 div 元素。

driver.find_element_by_xpath('//div[@class="inner-article"][.//a[@class="product-name"][.="Silk Shirt"]][.//a[@class="product-color"][.="Black"]]')

使其可重复使用:

def select_product(name, color):
    return driver.find_element_by_xpath('//div[@class="inner-article"][.//a[@class="product-name"][.="{product_name}"]][.//a[@class="product-color"][.="{product_color}"]]'.format(product_name=name, product_color=color))