Python 如何在selenium上创建while循环

Python 如何在selenium上创建while循环,python,selenium,while-loop,Python,Selenium,While Loop,我试图让机器人继续键入id,直到元素“门户”可点击为止。如何使它们在一个while循环中?或者任何其他方法来实现它?当您想要输入iD键直到门户可点击时,您的代码应该如下所示 while True: ID = driver.find_element_by_id("id") ID.send_keys("user123") ID.send_keys(Keys.RETURN) portal = driver.find_element_by_id("

我试图让机器人继续键入id,直到元素“门户”可点击为止。如何使它们在一个while循环中?或者任何其他方法来实现它?

当您想要输入iD键直到门户可点击时,您的代码应该如下所示

while True:
 ID = driver.find_element_by_id("id")
 ID.send_keys("user123")
 ID.send_keys(Keys.RETURN)

portal = driver.find_element_by_id("portal")
portal.click()
有一个“预期条件”使得这很容易。见下文:

portal = driver.find_element_by_id("portal")
    
while portal.is_enabled:
 ID = driver.find_element_by_id("id")
 ID.send_keys("user123")
 ID.send_keys(Keys.RETURN)
 portal.click

@C.Peck:如果您检查Portal.is_enabled,它将检查其是否已启用。要做到这一点,从来没有唯一的方法。EC.element_to_可剪裁是另一种方式。你不必吝啬去证明你的答案是正确的。OP希望等待元素可单击,而不仅仅是启用。2.取得成就的方法从来不是唯一的。但有一个最具可读性、最合理的解决方案,问题是直到门户网站需要将密钥发送到ID。所以,虽然这里需要循环,但条件门户是可点击的。有了这个答案,您只需等待条件,直到门户启用并可见,但不告诉直到您必须将密钥发送到ID@Sonali谢谢你指出,我误解了这个问题。我编辑了我的答案,以便它真正解决了正确的问题。除非我遗漏了什么,否则我认为我不会告诉它在循环中等待?
来自selenium.webdriver.common.by import by from selenium.webdriver.support.wait从selenium.webdriver.support导入WebDriverWait预期的条件为EC wait.until(EC.element可点击((By.ID,“portal”))
两个答案都是错误的。您不需要循环。
from selenium.webdriver.support import expected_conditions as EC

portal = driver.find_element_by_id("portal")

while not (EC.element_to_be_clickable(portal)):
 ID = driver.find_element_by_id("id")
 ID.send_keys("user123")
 ID.send_keys(Keys.RETURN)

portal.click();