2016-08-29 85 views
0

我正在使用硒構建python腳本,並且遇到了一個相當混亂的問題。硒Python - 查找包含兩個特定元素的div

網站使用不唯一的名稱列出產品,並且顏色也不唯一。顏色和名稱元素具有相同的父級。

我的腳本獲取用戶輸入,他希望腳本爲他購買哪種產品以及哪種顏色。

問題: 我不能爲我的生活弄清楚如何使用兩個變量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> 

我試過到目前爲止: 顯然,選擇命名的絲綢襯衫在頁面上的第一個產品是很容易的。我考慮選擇第​​一個產品,然後選擇產品父項,選擇該元素父項,然後選擇父母第二個子項,檢查它是否爲黑色,然後繼續,但CSS沒有父級選擇器。

我該如何去做這件事?

回答

1

創建一個選擇每個div class="inner-article"元素的主循環。

在循環中,尋找那些有h1子元素,並以「絲綢襯衫」的文本中a class=product-name孫子元素和p子元素,並與「黑」的文本a class=product-color孫子元素的元素。

+0

謝謝,好主意。腳本儘可能快地運行非常重要。你認爲這會使腳本放慢一兩秒以上嗎? – metadog

+0

不,我不這麼認爲。 (但是..頁面上有多少產品?) –

+0

20到30,所以它有希望不會成爲問題。非常感謝您花時間幫助我! – metadog

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)) 
相關問題