2017-05-04 95 views
0

我想寫一個代碼,讓我選擇我選擇的性別(讓我們用女性作爲例子)。元素如下。請注意,ID保持更改,所以我不能使用具有ID的css選擇器。Splinter Python腳本按鈕點擊

請告知在硒中使用哪種方法。

謝謝!

<div id="557f72b0-c612-428a-a77e-eb0841869ddb" class="nike-unite-gender-buttons gender nike-unite-component"> 
    <div class="shim"></div> 
    <div class="error"></div> 

    <input type="hidden" id="40d664f0-e498-4fa2-8a6f-7d9fc75cfe01" value="" name="gender" data-componentname="gender"> 

    <ul data-componentname="gender"> 

    <li id="222f5bc2-171e-450e-8182-8e15c8d9f47b" class=""> 
    <input type="button"> 
    <span>Male</span> 
    </li> 

    <li id="6c6098bb-fc9f-497e-8551-0ae6bb8a235c" class=""> 
    <input type="button"> 
    <span>Female</span> 
    <</li> 

    </ul> 
    <div class="tip">Please select a gender.</div> 
</div>  
+0

您是否嘗試過使用'XPath'選擇器,例如'// span [text ='Female']'?顯示你的嘗試和異常日誌 – Andersson

+1

@Andersson你的意思是'文本()'? :)順便說一下,在'splinter'中有方便的'find_by_text()'快捷方式。 – alecxe

+1

哦..是的,我的意思是'// span [text()='女']'。謝謝 – Andersson

回答

0

首先,通過類名查找性別容器:

gender_container = browser.find_by_css('.nike-unite-gender-buttons.gender').first 

然後,通過下面的文字找到span元素內的按鈕:

female = gender_container.find_by_xpath('.//li[span = "Female"]/input').first 
female.click() 

或者,您可以嘗試直接通過文本找到元素

browser.find_by_text('Female').first.click() 
+0

非常感謝。它的工作原理,我嘗試了一切,但find_by_text方法。大聲笑.. – xBillBillx

+1

@xBillBillx,你可能[接受這個答案](http://stackoverflow.com/help/accepted-answer)如果它解決了你的問題 – Andersson