对于selenium python中的循环脚本,值未保存在Excel中

对于selenium python中的循环脚本,值未保存在Excel中,python,selenium-webdriver,Python,Selenium Webdriver,请找到下面的脚本。正在计划在excel中保存Id和Name字段。我没有看到值以串联方式存储在excel中。相反,以前的值将显示在excel中的循环调用中。请帮我张贴你的建议。提前谢谢 脚本: from selenium.common.exceptions import NoSuchElementException def run(): from selenium import webdriver from texttable import len import xlrd

请找到下面的脚本。正在计划在excel中保存Id和Name字段。我没有看到值以串联方式存储在excel中。相反,以前的值将显示在excel中的循环调用中。请帮我张贴你的建议。提前谢谢

脚本:

from selenium.common.exceptions import NoSuchElementException
def run():
    from selenium import webdriver
    from texttable import len
    import xlrd
    import xlwt
    driver=webdriver.Firefox()
    driver.implicitly_wait(10)
    driver.get("http://ssmatri.com/ssnmlprofilelist.php?type=GO")
    driver.maximize_window()
    w1=driver.window_handles[0]
    try:
        while (driver.find_element_by_link_text("1").text=='1'):
            try:
                #driver.find_element_by_id("withphoto").click()
                j=(len("//*[@id='p7']/div[1]/div[3]/div[1]/table[4]/tbody/tr/td"))
                driver.implicitly_wait(20)
                for i in range (2,j+1):
                    name= driver.find_element_by_xpath("//*[@id='p7']/div[1]/div[3]/div[1]/table[4]/tbody/tr[%d]/td[3]"%i).text
                    print driver.find_element_by_xpath("//*[@id='p7']/div[1]/div[3]/div[1]/table[4]/tbody/tr[%d]/td[3]"%i).text
                    Id= driver.find_element_by_xpath("//*[@id='p7']/div[1]/div[3]/div[1]/table[4]/tbody/tr[%d]/td[2]"%i).text
                    print driver.find_element_by_xpath("//*[@id='p7']/div[1]/div[3]/div[1]/table[4]/tbody/tr[%d]/td[2]"%i).text
                    #print driver.find_element_by_xpath("//*[@id='p7']/div[1]/div[3]/div[1]/table[4]/tbody/tr[%d]/td[5]/h5"%i).text
                    print driver.find_element_by_xpath("//*[@id='p7']/div[1]/div[3]/div[1]/table[4]/tbody/tr[%d]/td[1]"%i).text
                    driver.find_element_by_xpath("//*[@id='p7']/div[1]/div[3]/div[1]/table[4]/tbody/tr[%d]/td[1]"%i).click()
                    driver.implicitly_wait(5)
                    w2=driver.window_handles[1]
                    driver.switch_to_window(w2)
                    #print driver.current_url
                    print driver.find_element_by_xpath("//*[@id='txtByJquery']/div/div[3]/div[1]/div[1]/div/table[2]/tbody/tr/td[1]/div[1]/table/tbody/tr[1]/td[3]").text
                    print driver.find_element_by_xpath("//*[@id='txtByJquery']/div/div[3]/div[1]/div[1]/div/table[2]/tbody/tr/td[1]/div[1]/table/tbody/tr[2]/td[3]").text
                    k=driver.find_element_by_xpath("//*[@id='txtByJquery']/div/div[3]/div[1]/div[1]/div/table[2]/tbody/tr/td[1]/div[2]/table/tbody/tr[8]/td[3]").text
                    print k
                    if(k=='H1B Visa'):
                        print 'The person holds passport and H1B Visa'
                    elif(k=="Passport Holder"):
                        print 'The Person holds Passport but does not hold H1B Visa'
                    else:
                        print 'The person does not hold Passport and Visa'
                    driver.close()
                    driver.switch_to_window(driver.window_handles[0])
                    driver.implicitly_wait(5)
                    book=xlwt.Workbook()
                    sheet1=book.add_sheet("Matchings")
                    sheet1.write(i,0,name)
                    sheet1.write(i,1,Id)
                    book.save('C:\Users\HOME\Desktop\saisankara_Matchings.xls')
                    driver.implicitly_wait(5)
                    continue
            except NoSuchElementException:
                driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
                driver.implicitly_wait(5)
            if(driver.find_element_by_link_text("next>>").text=='next>>'):
                driver.find_element_by_link_text("next>>").click()
            elif driver.find_element_by_link_text("1").text=='1' :
                driver.find_element_by_link_text("1")
                #driver.find_element_by_link_text("1").click()
            continue
    except NoSuchElementException:
        driver.quit()

因为您在循环中创建并保存工作簿,所以它将在下一次迭代中覆盖以前创建和保存的每个文件。

Ok。但是i的值对于每一行是不同的,那么它是如何被覆盖的呢?如果你有什么解决方案,你能和我分享一下吗?在循环之外创建
book
sheet1
,以及在循环操作之后
save
它们……并且在应该写入的
行的引用之外保留一个引用。写入数据后增加。我尝试了你的代码,有折旧调用和异常:
w2=driver.window\u句柄[1]
索引器:列表索引超出范围
请自行调试代码谢谢你的回复。我不这么认为,循环不重要。下面是一个excel for循环的示例。对于此代码,值将保存在excel中。book=xlwt.Workbook()sheet1=book.add_sheet(“示例”)为范围(10)中的i添加工作表:sheet1.write(i,i,i)book.save('C:\Users\HOME\Desktop\ex.xls')print“脚本已完成”请自行调试。最后一个示例,工作簿的创建在循环之外。值写在这里,但还有其他错误