如何在Selenium Webdriver中使用Python高效迭代可变数量?
我正在用Python和Selenium WebDriver在IE浏览器上工作,下面的代码运行得很好,但我需要把它放在一个循环里。请给点建议。termsName0可能是2、3、4或者更多的数字。
代码:
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
如果你想要遍历不固定数量的项目,可以试试下面的这个方法。
#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")
希望这对你有帮助。
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
如果你不知道"N"是什么,可以使用try except这种方式来处理。
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