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))
我正在使用 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))