我如何迭代列表中的各行并使用它们在表单中输入?python

我如何迭代列表中的各行并使用它们在表单中输入?python,python,selenium,Python,Selenium,我有以下代码: from selenium import webdriver #My list of [5,n] dimensional values ls = [ [3,10,19,20,25], [4,5,6,10,12]... [n] ] #This is a website form that takes 5 values as input element = driver.find_element_by_name("n1") element1 = driver.find_ele

我有以下代码:

from selenium import webdriver

#My list of [5,n] dimensional values 
ls = [ [3,10,19,20,25], [4,5,6,10,12]... [n] ]


#This is a website form that takes 5 values as input
element = driver.find_element_by_name("n1")
element1 = driver.find_element_by_name("n2")
element2 = driver.find_element_by_name("n3")
element3 = driver.find_element_by_name("n4")
element4 = driver.find_element_by_name("n5")

#After I find and store elements, I want to send 5 values from the list         
element.send_keys(str(ls[0]))
element1.send_keys(str(ls[1]))
element2.send_keys(str(ls[2]))
element3.send_keys(str(ls[3]))
element4.send_keys(str(ls[4]))

#Next I will submit form. Then loop again to retrieve next row of values 
#into form.
目前,我只能从值列表中选择一行。我希望能够创建一个for循环,允许我在程序运行后选择下一行值。我发现嵌套循环可能会有所帮助,但不确定如何使其工作

更新:

这是我努力实现的一部分。我尝试了一些作为反馈提供的代码,但循环工作不正常

from selenium import webdriver


ls = [[1,5,10,16,19], [3,10,19,20,25], [1,2,11,16,29]]
for iter in range(3):
   driver = webdriver.Chrome('chromedriver.exe')

   driver.get("http://lottery.com/site/winningNumberSearch?")

   select = Select(driver.find_element_by_name('searchTypeIn'))
   select.select_by_visible_text("Number")
   select = Select(driver.find_element_by_name('gameNameIn'))
   select.select_by_visible_text("Fantasy 5")

   elements = [driver.find_element_by_name("n" + str(i) + "In") for i in 
   range(1,6)]

   for values in ls:
       if len(elements) != len(values):
           #if theres an error, do something
            pass
       for element, value in zip(elements, values):
           element.send_keys(str(value))
           driver.find_element_by_id("submit").click()
   driver.quit()
我让它这样工作

driver = webdriver.Chrome()

driver.get("http://lottery.com/site/winningNumberSearch?")

select = Select(driver.find_element_by_name("searchTypeIn"))
select.select_by_visible_text("Number")
select = Select(driver.find_element_by_name('gameNameIn'))
select.select_by_visible_text("Fantasy 5")

elements = [driver.find_element_by_name("n" + str(i) + "In") for i in 
range(1, 6)]



for k in ls:
    if len(elements) != len(k):
        pass
    for j, l in zip(elements, k):
        j.send_keys(str(l))
        #sleep(1)

    sleep(1)    
    driver.find_element_by_id("submit").click()
    sleep(1)
    driver.get("http://flalottery.com/site/winningNumberSearch?")
    sleep(1)
    select = Select(driver.find_element_by_name("searchTypeIn"))
    select.select_by_visible_text("Number")
    select = Select(driver.find_element_by_name('gameNameIn'))
    select.select_by_visible_text("Fantasy 5")
    elements = [driver.find_element_by_name("n" + str(i) + "In") for i in 
    range(1, 6)]

不完美,但对我来说很有用。非常感谢。

ls
是一个列表。我想下面是你需要的

element.send_keys(str(ls[0][0]))
element1.send_keys(str(ls[0][1]))
element2.send_keys(str(ls[0][2]))
element3.send_keys(str(ls[0][3]))
element4.send_keys(str(ls[0][4]))
下面是一个可以使用的循环示例:

for values in ls:
   for i in range(len(values)):
       print(values[i])

您将希望将这些元素作为元素[1]而不是元素1来处理:

elements = [driver.find_element_by_name("n" + str(i)) for i in range(1, 6)]

for values in ls:
    if len(elements) != len(values):
        # if you consider this an error, do something
        pass
    for element, value in zip(elements, values):
        element.send_keys(str(value))

    submit_form()
您可以使用循环

for values in ls:
    for i in range(1, len(values) + 1):
        element = driver.find_element_by_name("n{}".format(i))
        element.send_keys(str(values[i-1]))

循环没有像我期望的那样工作。不,我很抱歉-这里不是调试我无法运行的代码的地方(我甚至不知道错误,如果有的话)。我看不出有什么不对劲;我确实看到了两个版本之间的差异(time.sleep(1),对click()的调用处于不同的位置,等等)