python - Else 语句没有被执行。IF 语句是唯一正在运行的语句吗?
问题描述
我有这个脚本可以去谷歌外卖并下载外卖文件。我遇到的问题是,单击“Takeout_dlbtn”时某些帐户需要重新登录,而其他帐户可以直接下载。我试图把这个 IF ELSE 语句。如果显示“密码”,我们执行重新输入密码然后下载的步骤。如果没有出现“密码”,我们假设我们不需要登录并且可以立即下载。
我遇到的问题是,我的 IF 语句运行,如果显示密码页面,它将输入密码然后下载。但是如果没有显示密码页面,IF 语句仍然运行并且我的 ELSE 语句不会被执行。它抛出此错误“没有这样的元素:无法找到元素:{“方法”:“css select”,“selector”:“[name-”password“]”}”
如果未显示“密码”元素,如何让 ELSE 函数运行?任何帮助,将不胜感激。
def DLTakeout(self, email, password):
self.driver.get("https://takeout.google.com/")
time.sleep(2)
self.driver.find_element_by_xpath(takeout_DLbtn).click()
time.sleep(4)
if self.driver.find_element_by_name("password").is_displayed():
print("IF statement")
time.sleep(3)
self.driver.find_element_by_name("password").clear()
time.sleep(5)
self.driver.find_element_by_name("password").send_keys(password)
time.sleep(5)
self.driver.find_element_by_xpath("//*[@id='passwordNext']/div/button/div[2]").click()
print("Downloading")
logging.info("Downloading")
time.sleep(10) #change time.sleep to a higher number when download file is in gbs #1500
self.write_yaml(email)
print("Write to yaml successfully")
logging.info("Write to yaml successfully")
print("Zip move process about to start")
logging.info("Zip move process about to start")
time.sleep(4)
else:
print("else statement")
time.sleep(5)
print("Downloading")
logging.info("Downloading")
解决方案
根据硒文档:
4.2. 按名称定位
当您知道元素的名称属性时使用它。使用此策略,将返回具有匹配名称属性的第一个元素。如果没有元素具有匹配的名称属性,
NoSuchElementException
则将引发 a。
因此,不要使用 if/else,而是尝试 try/catch 块:
try:
self.driver.find_element_by_name("password")
print ("if statement")
...
except NoSuchElementException:
print ("else statement")
...
推荐阅读
- javascript - 菜单不会消失
- azure - Asp.net core 从 azure cloud blob 段中获取所有文件
- reactjs - 组件销毁后撤消 API 调用
- amazon-web-services - 使用 Cloud Custodian 仅限制特定安全组中的特定端口
- python - 加权中值 pyspark 数据帧
- javascript - node legacy url.parse 已弃用,改用什么?
- javascript - Map(iterable) alternative for IE 11
- python - Example uses queryset instead of model attribute for a DetailView extending class
- python - Absolute Elements Sums
- java - How to autogenerate a Unique ID from Immutables Criteria Library?