2017-10-06 152 views
1
el = driver.find_elements_by_xpath("//div[contains(@class,'statsprogramsgridmodal')]//div[contains(@class,'ui-grid-icon-ok')]") 

我寫了上面的xpath來找到web元素。它給了我三個結果。我想點擊第二個Web元素。你能告訴我如何在python硒中完成嗎?如何點擊python硒元素列表中的第二個元素?

+0

哪個第二個元素?兄弟?你能給我們一個HTML例子嗎? – Wandrille

+0

這不是兄弟姐妹,所有三個都在同一水平 –

回答

2

使用XPath返回第二從所有結果匹配:

el = driver.find_element_by_xpath(
    "(//div[contains(@class,'statsprogramsgridmodal')]//div[contains(@class,'ui-grid-icon-ok')])[2]") 

用XPath從相同的水平返回第二子:

el = driver.find_element_by_xpath(
    "//div[contains(@class,'statsprogramsgridmodal')]//div[contains(@class,'ui-grid-icon-ok')][2]") 

或用XPath返回多個元素:

el = driver.find_elements_by_xpath(
    "//div[contains(@class,'statsprogramsgridmodal')]//div[contains(@class,'ui-grid-icon-ok')]")[1] 

或與CSS選擇返回多個元素:

el = driver.find_elements_by_css_selector(
    "div[class*='statsprogramsgridmodal'] div[class*='ui-grid-icon-ok']")[1] 
+0

您的第一個解決方案確實對我有用。唯一的問題是索引編號。對於我的情況,如果我在xpath之後設置[2]索引,它會選擇第三個元素,[1]選擇第二個元素,[0]索引選擇第一個元素。您只需更改它,我會接受您的回答 –

+0

@Shoaib Akhtar,XPath採用基本1索引,並且該命令返回基本0數組。你能再檢查一次嗎?請注意,'(// xxx/xxx)[2]'返回第二個結果,而'// xxx/xxx [2]'返回第二個孩子。 –

+0

感謝您的解釋。我沒有把xpath放在大括號driver.find_element_by_xpath(「(// xxx/xxx)[2]」)中。您的解決方案運行良好。謝謝 –

0

你可以試試:

driver.find_element_by_xpath('//yourXpath/following-sibling::node()').click() 

driver.find_element_by_xpath('//yourXpath/following-sibling::theTag').click() 

凡theTag是任何你想要的:格,TR,UL,...

相關問題