对于selenium python中的循环脚本,值未保存在Excel中
请找到下面的脚本。正在计划在excel中保存Id和Name字段。我没有看到值以串联方式存储在excel中。相反,以前的值将显示在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
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“脚本已完成”请自行调试。最后一个示例,工作簿的创建在循环之外。值写在这里,但还有其他错误