首页 > 解决方案 > 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 作为示例。

标签: pythonseleniumif-statement

解决方案


这些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')

推荐阅读