![](/img/trans.png)
[英]How to efficiently iterate table number in Selenium Webdriver using Python?
[英]How to efficiently iterate variable number in Selenium Webdriver using Python?
我在 IE 上使用带有 Python 的 selenium webdriver,下面提到的代码工作正常,但我需要在循环中进行。 请建议。 termName0 可以是 2 ,3 4 或 N 个数字
代码:
Select(self.driver.find_element_by_name("termsName0")).select_by_visible_text("Blank No Text")
Select(self.driver.find_element_by_name("termsName1")).select_by_visible_text("Blank No Text")
Select(self.driver.find_element_by_name("termsName3")).select_by_visible_text("Blank No Text")
如果您不知道“N”,您可以使用 try except contract 。
from selenium.common.exceptions import ElementNotVisibleException, WebDriverException, NoSuchElementException
try:
i = 0
while True:
name = "termsName" + str(i)
Select(self.driver.find_element_by_name(name).select_by_visible_text("Blank No Text")
i +=1
except (ElementNotVisibleException, WebDriverException, NoSuchElementException):
pass
这是一种方式。 N 指定要循环的次数
N = 4
for i in range(N):
name = "termsName" + str(i)
Select(self.driver.find_element_by_name(name).select_by_visible_text("Blank No Text")
基本上它需要当前迭代的数量并将其附加到"termsName"
。
上面的代码相当于
Select(self.driver.find_element_by_name("termsName0")).select_by_visible_text("Blank No Text")
Select(self.driver.find_element_by_name("termsName1")).select_by_visible_text("Blank No Text")
Select(self.driver.find_element_by_name("termsName2")).select_by_visible_text("Blank No Text")
Select(self.driver.find_element_by_name("termsName3")).select_by_visible_text("Blank No Text")
为了迭代可变数量的项目,你可以尝试这样的事情
#To fetch all elements start with termsName
element_list = firefox_driver.find_elements_by_id("termsName[0-9]*")
# below code will iterate over the all links
for i in range(len(element_list)):
name = "termsName" + str(i)
Select(self.driver.find_element_by_name(name).select_by_visible_text("Blank No Text")
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.