Selenium Python For循环

时间:2014-06-03 09:04:51

标签: python selenium

我在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")

3 个答案:

答案 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