首页 > 解决方案 > 启用检查按钮时无法执行 if else 语句代码

问题描述

单击申请工作后,我正在尝试检查 Indeed.com 上的按钮,但我的代码似乎不起作用。第一个 if 检查是否启用了继续按钮,如果没有,则会关闭页面,切换到主窗口并申请下一个工作。if语句中的if else检查是否有另一个继续按钮,如果没有单击应用按钮完成并关闭页面然后切换到主窗口,它将关闭页面并切换到主窗口。

对不起,我还不能发布图片,所以我必须链接它们。

这是您点击申请工作后的图片 https://imgur.com/FzITw8q

如果有另一个继续按钮 https://imgur.com/iJMFqp8 ,这是图片

如果没有继续按钮,只有应用按钮,这是图片https://imgur.com/62KMUwY

最后一个https://imgur.com/ls4mwEi

# Click on continue button if there any             
if WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.XPATH,'//*[@id="form-action-continue"]'))).is_enabled():
    WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.XPATH,'//*[@id="form-action-continue"]'))).click()
    if WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.XPATH,'//*[@id="form-action-continue"]'))).is_enabled():
        self.driver.close()
        self.driver.switch_to.window(main) 
    else:
        WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.XPATH,'//*[@id="form-action-submit"]'))).click()
        self.driver.close()
        self.driver.switch_to.window(main) 
#If no button close the window and switch to main window
else: 
    self.driver.close()
    self.driver.switch_to.window(main)

我也试过 is_displayed() 但它根本不起作用。

标签: python-3.xseleniumselenium-webdriver

解决方案


首先,我想知道您如何在 WebDriverWait 上调用 isEnabled()。这只会等待一个元素,直到它被定位并且不会返回它的 WebElement。因此,当您在第 1、2 和 3 行启用应用时,它会引发错误。首先将该元素分配给一个变量,然后在 WebDriverWait 中调用该变量。一旦元素被定位/等待直到被 WebDriverWait 定位的元素,使用 click 或使用变量而不是 WebDriverWait 启用方法。


推荐阅读