python循环遇到异常,如何跳过异常继续执行?

Boris Qian 钱波 2021-04-14 09:34:34
下面是我写的一个代码,原理是我在数据源的excel表 testleadtime中已经罗列了目的港口的代码和其对应的海运天数,需要到公司指定的内网进行更新数据。

跑循环的时候,出错怎么办?

比如说,下面是Excel表中的第一列和第二列,POD是目的港,TL是运输天数

跑Python的时候,如果按照下面的表格去提取数据,填到对应的网址,没有问题
因为JPHKT,JPMOJ,JPUKB,JPNGO都在网址的后台有维护。

POD LT
JPHKT 1
JPMOJ 2
JPUKB 3
JPNGO 4

但是如果我在原始数据的excel表中,插入一个网址后台没有维护的目的港DPRK

我这个for 循环相当于是被打断了,相当于代码中输入POD "DPRK" 之后点find没有结果

POD LT
JPHKT 1
JPMOJ 2
DPRK 5
JPUKB 3
JPNGO 4

我的问题是,如何修改我的代码,好让循环跳过DPRK,继续执行下一个JPUKB直到结束?

下面是我编写的原始代码

[b][b]#导入相关的excel
import pandas as pd
data=pd.read_excel("testleadtime.xlsx")

import numpy as np

data.dropna(inplace=True)
data.reset_index()

#初始步骤,登陆ALS,打开所属模块
from selenium import webdriver
wd=webdriver.Chrome()
wd.implicitly_wait(10)
from selenium.webdriver.support.ui import Select
from time import sleep
#登陆ALS3
wd.get("http://gsltest.upm-kymmene.com/ALS3S/run/app/home/")
#选择SCCT
element=wd.find_element_by_xpath("/html/body/table/tbody/tr[3]/td/table/tbody/tr/td[1]/div[2]/div[1]/table/tbody/tr/td[2]/a")
element.click()
#选择LEG
element=wd.find_element_by_xpath("/html/body/table/tbody/tr[3]/td/table/tbody/tr/td[1]/div[2]/div[3]/table/tbody/tr/td[2]/a")
element.click()


#循环跑流程
for i in range (len(data.index)):
#选择List of legs
element=wd.find_element_by_xpath("/html/body/table/tbody/tr[3]/td/table/tbody/tr/td[1]/div[2]/div[4]/table/tbody/tr/td[2]/a")
element.click()
#选择SEA
select=Select(wd.find_element_by_css_selector("[name='transportmode']"))
select.select_by_value("SEA")
#输入POL
wd.find_element_by_css_selector("[name='picklocation']").send_keys("SG01")
#输入POD
wd.find_element_by_css_selector("[name='droplocation']").send_keys(data.iloc[i,0])
#点击find
element=wd.find_element_by_xpath("/html/body/table/tbody/tr[3]/td/table/tbody/tr/td[2]/div/form/div[3]/input")
element.click()

#点击Leg ID
element=wd.find_element_by_xpath("/html/body/table/tbody/tr[3]/td/table/tbody/tr/td[2]/div/form/table/tbody/tr[2]/td[1]/a")
element.click()
#输入average duration
wd.find_element_by_css_selector("[name='averageduration']").clear()
wd.find_element_by_css_selector("[name='averageduration']").send_keys(str(data.iloc[i,1]))
#点击保存
element=wd.find_element_by_xpath("/html/body/table/tbody/tr[3]/td/table/tbody/tr/td[2]/div/div[2]/form/div[3]/table/tbody/tr/td[1]/input")
element.click()
sleep(2)




...全文
5098 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Boris Qian 钱波 2021-04-15
  • 打赏
  • 举报
回复
我反复调试,改成下面这样居然成了
Boris Qian 钱波 2021-04-14
  • 打赏
  • 举报
回复
还是不行:
Boris Qian 钱波 2021-04-14
  • 打赏
  • 举报
回复
加了try, except , pass , continue,还是各种错: 我再描述一下问题,我是在步骤#点击find之后,因为是输入了不存在的POD,所以#点击leg ID的时候出错,此时需要跳过报错,回到一开始的#选择list of legs,重新继续循环
陈年椰子 2021-04-14
  • 打赏
  • 举报
回复
应该可以用 try except 把可能有异常的地方包起来。 有数据就处理, 没数据就 continue
Boris Qian 钱波 2021-04-14
  • 打赏
  • 举报
回复
现阶段遇到的报错:
Boris Qian 钱波 2021-04-14
  • 打赏
  • 举报
回复
陈年椰子 2021-04-14
  • 打赏
  • 举报
回复
把 excpet 部分 放到 sleep(2) 后
WangyuLiaoke 2021-04-14
  • 打赏
  • 举报
回复
大佬,我这个错误该怎么改啊

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧