我在IE上使用带有Python的selenium webdriver,下面提到的代码工作正常,但我需要在循环中进行此操作。 请建议。 termsName0可以是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")
答案 0 :(得分:0)
这是一种方式。 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")
答案 1 :(得分:0)
对于迭代可变数量的项目,您可以尝试这样的事情
#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")
希望它有所帮助。
答案 2 :(得分:0)
如果您不知道“ N”,则可以使用try(合同除外)。
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