我正在使用selenium构建一个python脚本,并遇到了一个非常令人困惑的问题。
网站使用名称(不是唯一的)和颜色列出产品,颜色也不是唯一的。颜色和名称元素具有相同的父元素。
我的脚本获取用户输入他希望脚本为他购买的产品以及颜色。
问题: 我不能为我的生活找出如何使用两个变量productName和productColor选择合适的产品。
DOM:
<div class="inner-article">
<h1>
<a class="product-name">Silk Shirt</a>
</h1>
<p>
<a class="product-color">Black</a>
</p>
</div>
到目前为止我尝试了什么: 显然,在页面上选择名为Silk Shirt的第一个产品非常简单。我考虑选择第一个产品,然后选择父产品,选择父元素,然后选择父母第二个孩子,检查它是否为黑色,然后继续,但CSS没有父选择器。
我将如何做到这一点?
答案 0 :(得分:1)
创建一个选择每个div class="inner-article"
元素的主循环。
在循环中,查找具有h1
子元素和a class=product-name
孙元素的元素,文本为“Silk Shirt”,p
子元素和{{ 1}}孙子元素,文字为“黑色”。
答案 1 :(得分:0)
也许尝试使用xpath进行搜索。下面的xpath将返回包含所需产品和颜色的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))