任何硒预期条件返回什么值?我如何将它与 IF 语句一起使用?



所以我运行这段代码,基本上你输入一个代码并按下一个按钮,然后如果代码正确,页面会重定向。

所以我希望代码使用"invisibility_of_element_located"(这样我就可以判断页面是否已加载(检测该页面上的图像是否消失,这在单独使用时工作正常,但是我想在 if 语句中使用它,这样如果元素确实不可见:

打印(某物(

但是,我似乎无法弄清楚如何以这种方式设置它。 我试过让它 == 真实,但仍然一无所获。 我也尝试过在 try 中使用它,但基本上我不知道它返回什么,所以我无法正确使用它。

if WebDriverWait(driver, 50).until(EC.invisibility_of_element_located((By.CLASS_NAME, "NXVPg Szr5J coreSpriteLock "))) == True:
print("Now its loaded")
else:
print("Nope not loaded")

当如上所述使用它时,无论是否使用 == True,它都会立即打印响应("现在已加载"(即使页面实际上没有更改。但是,当像这样使用时:

WebDriverWait(driver, 50).until(EC.invisibility_of_element_located((By.CLASS_NAME, "NXVPg Szr5J coreSpriteLock ")))
print("Now its loaded")

它实际上确实在等待并且工作正常,唯一的问题是我无法使用 else 来显示它尚未加载,任何帮助将不胜感激!

WebDriverWait最多等待x秒,直到满足条件。如果不满足条件,它将抛出TimeoutException。换句话说,如果条件失败,if块将永远不会到达else分支。

选择try-except结构:

from selenium.common import exceptions as SE
try:
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((*<By relevant identification method here>*)))
print("Now its loaded")
except SE.TimeoutException:
print("Nope not loaded")

注意By.CLASS_NAME不是正确的使用,因为您有多个类名("NXVPg Szr5J coreSpriteLock "(。此处为类似问题的示例。

请改用By.CSS_SELECTORBy.XPATH

By.CSS_SELECTOR, ".NXVPg.Szr5J.coreSpriteLock "
#or
By.XPATH, "//*[@class='NXVPg Szr5J coreSpriteLock ']"

相关内容

  • 没有找到相关文章

最新更新