python - Python:if...elif 没有返回正确的结果
问题描述
作为一个实践项目的一部分,我和一个朋友正在编写一个脚本来简化资产管理软件。我们正在自动填写必填字段并按下结帐所需的所有按钮,例如电话。搜索特定设备后,有两个选项: - 设备已找到且可用,因此可以签出 - 设备已找到但不可用,因此无法签出
为了实现这一点,我们编写了一个 if 语句,检查“Checkout”或“Checkin”,并相应地为我们提供下一个选项。
我们已经尝试了各种带有缩进的东西,颠倒了语句的顺序,......脚本似乎永远不会到达“其他”点。当当前状态为“checkin”时,它会给出消息框,要求重新开始,但当当前状态为“checkout”时,它实际上不会打印“5000”。
我们也尝试过用 elif 代替 else,指定: elif browser.find_element_by_xpath('//*[@title="Check this item out"]'): 但即便如此,它也从来没有真正走到要走的地步进入其他。
if browser.find_element_by_xpath('//*[@title="Check this item in so it is available for re-imaging, re-issue, etc."]'):
print("1")
statusResult = tk.messagebox.askquestion('Device not available', 'Device has been checked out already. Do you wish to start over?', icon='warning')
if statusResult == 'yes':
print("2")
elif statusResult == 'no':
print("3")
else:
print("5000")
当状态为“签入”时,需要弹出消息框要求重新开始(这是有效的)。当状态为“结帐”时,脚本需要移动到 else 语句并打印 5000 作为示例。
解决方案
这些find_element_by_*
方法不返回布尔值。您不能像您的示例那样将它们与 if 语句一起使用。他们要么返回 a WebElement
(找到时),要么引发 a selenium.common.exceptions.NoSuchElementException
(未找到时)。
try:
browser.find_element_by_xpath('//*[@title="Check this item in so it is available for re-imaging, re-issue, etc."]'):
print('found')
except NoSuchElementException:
print('not found')
推荐阅读
- reactjs - 反应添加/编辑用户不能同时工作
- javascript - 这是在js中进行回调的正确方法吗?
- python - 将 1D 数组连接到 3D 数组
- excel - 使密码不可见以保护工作表
- sql - Laravel 原始查询:总计与选择内部计数
- android - 有什么方法可以测试新的 google play referrer api 而无需在 Google Play 商店中发布应用程序?
- react-native - React Native Camera - 如何使捕获按钮粘在手机屏幕的一侧?
- r - R:更改列标签的高度/位置
- python - 串联多个神经网络的方法(非并行)
- javascript - Microsoft Bot Framework - 读取 bot 文件时出错,但所有环境变量都正确?