2015-09-11 45 views
2

我正試圖在其他用戶列表中定位用戶。例如,我創建了一個自動化測試用例來創建名爲「tester1」的用戶。我現在想創建一個測試用例,在其他用戶列表中查找並刪除「tester1」。現在我的工作是通過xpath查找元素,它只針對用戶列表中的某一行。 這裏是我一起工作的網頁代碼:Python-Selenium在其他用戶列表中定位用戶

<span class="delete" data-reactid=".0.1.1.0.2.1.0.$usertree.1.0.0.$tester1.0.0.1"> 
    <span class="icon-dash" data-reactid=".0.1.1.0.2.1.0.$usertree.1.0.0.$tester1.0.0.1.0" 
    ></span> 

這是我一直在使用什麼我的解決方法。

# Finds and clicks minus button to prompt deletion 
# Deletes the 4th in the list/to change this, modify the number in the quotes below 
element = driver.find_element_by_xpath("//tr[4]/td/div/span/span") 
element.click() 

# Finds and clicks Delete button 
element = driver.find_element_by_xpath("//button[2]") 
element.click() 

編輯:

<div class="tree-view_children" data-reactid=".0.1.1.0.2.1.0.$usertree.1">       <table class="ss-table" data-reactide=".0.1.1.0.2.1.0.$usertree.1.0"> 
<tbody data-reactid=".0.1.1.0.2.1.0.$usertree.1.0.0"> 
<tr class="user-list-item" data-reactid=".0.1.1.0.2.1.0.$usertree.1.0.0.$tester1"> 
<td data-reactid=".0.1.1.0.2.1.0.$usertree.1.0.0.$tester1.0"> 
<div data-reactid=".0.1.1.0.2.1.0.$usertree.1.0.0.$tester1.0.0"> 
<span class="delete" data-reactid=".0.1.1.0.2.1.0.$usertree.1.0.0.$tester1.0.0.1"> 
<span class="icon-dash" data- reactid=".0.1.1.0.2.1.0.$usertree.1.0.0.$tester1.0.0.1.0"> 
</span> 
+1

究竟什麼是你的問題? –

回答

1

它看起來像你可以依靠測試者的名稱爲data-reactid屬性的一部分:

tester = "tester1" 

delete_button = driver.find_element_by_xpath("//span[@class = 'delete' and contains(@data-reactid, '$%s.')]" % tester) 
delete_button.click() 
+1

^這是做到這一點的正確方法。在這種情況下,XPath的另一種選擇是CSS選擇器,'span.delete [data-reactid * ='tester1']' – JeffC

+0

@alecxe我將我的代碼行與您發佈的內容進行了交易。以下是我的結果:「tester1」位於頁面上,但「delete_button.click()」未點擊刪除按鈕。在這一點上它到達用戶頁面找到「tester1」並且什麼都不做。有什麼建議麼? – Chris

+0

@JeffC我將你的建議添加到我的代碼中,並得到了我上面發佈的相同結果^^^。 – Chris

相關問題