在 python 中使用 selenium 迭代列表项
Iteration of List Items using selenium in python
我有一个包含 7 个值的下拉菜单,这 7 个值以列表项的形式存储在无序列表下,如下所示:
<ul class="rcbList" style="list-style:none;margin:0;padding:0;zoom:1;">
<li class="rcbItem ">--Select--</li>
<li class="rcbHovered ">PIPL-C1-BH-RILJM</li>
<li class="rcbItem ">PIPL-C1-BH1-RILJM</li>
<li class="rcbItem ">PIPL-C1-BH2-RILJM</li>
<li class="rcbItem ">PIPL-C1-BH-RPLJM</li>
<li class="rcbItem ">PIPL-C1-DHJ-RPLJM</li>
<li class="rcbItem ">PIPL-C1-DHJ-RILJM</li>
</ul>
我想在 python 中的 selenium chromedriver 的帮助下使用 for
循环单击此下拉菜单的每个值。
假设我想点击第二个值 PIPL-C1-BH-RILJM
,我可以这样做:
driver.find_element(By.XPATH,"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li[2]").click()
但是要在 for
循环中使用它,我必须在 li
标签上建立索引。所以,当我写成:
i=2
driver.find_element(By.XPATH,"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li['+str(i)+']").click()
它只显示 --Select--
而不是 select 第二个值,i
的其他值也是如此。
我也试过:
i=2
driver.find_element(By.XPATH,"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li['"+str(i)+"']").click()
但是 --Select--
再次从下拉菜单中 selected。
那么,谁能帮我点击一个特定的值,并在 li
标签上建立索引。
任何帮助将不胜感激。
像下面这样尝试一次:
收集列表中的所有 li
标记元素,然后遍历它们。同样使用 find_elements
。
# This should highlight all the li tags - //div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li
options = driver.find_elements(By.XPATH,"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li")
# This should print 7
print(len(options))
# Start the loop from index 1 since the first option is "--Select--"
for i in range(1,len(options)):
options[i].click()
我有一个包含 7 个值的下拉菜单,这 7 个值以列表项的形式存储在无序列表下,如下所示:
<ul class="rcbList" style="list-style:none;margin:0;padding:0;zoom:1;">
<li class="rcbItem ">--Select--</li>
<li class="rcbHovered ">PIPL-C1-BH-RILJM</li>
<li class="rcbItem ">PIPL-C1-BH1-RILJM</li>
<li class="rcbItem ">PIPL-C1-BH2-RILJM</li>
<li class="rcbItem ">PIPL-C1-BH-RPLJM</li>
<li class="rcbItem ">PIPL-C1-DHJ-RPLJM</li>
<li class="rcbItem ">PIPL-C1-DHJ-RILJM</li>
</ul>
我想在 python 中的 selenium chromedriver 的帮助下使用 for
循环单击此下拉菜单的每个值。
假设我想点击第二个值 PIPL-C1-BH-RILJM
,我可以这样做:
driver.find_element(By.XPATH,"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li[2]").click()
但是要在 for
循环中使用它,我必须在 li
标签上建立索引。所以,当我写成:
i=2
driver.find_element(By.XPATH,"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li['+str(i)+']").click()
它只显示 --Select--
而不是 select 第二个值,i
的其他值也是如此。
我也试过:
i=2
driver.find_element(By.XPATH,"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li['"+str(i)+"']").click()
但是 --Select--
再次从下拉菜单中 selected。
那么,谁能帮我点击一个特定的值,并在 li
标签上建立索引。
任何帮助将不胜感激。
像下面这样尝试一次:
收集列表中的所有 li
标记元素,然后遍历它们。同样使用 find_elements
。
# This should highlight all the li tags - //div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li
options = driver.find_elements(By.XPATH,"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li")
# This should print 7
print(len(options))
# Start the loop from index 1 since the first option is "--Select--"
for i in range(1,len(options)):
options[i].click()