python 中的 Selenium webdriver find_element_by_id() 方法使用 phantomjs 抛出错误

Selenium webdriver find_element_by_id() method in python throws error with phantomjs

python 上基于 selenium webdriver 的网络测试用例在使用 phantomjs 时遇到问题。它在 driver.find_element_by_id("username").

上出错

相关HTML:

<input class="form-control" name="username" id="username" type="text" placeholder="Username">

听说是时间等待的问题,time.sleep(10)之前和之后都试过了,还是没有进展:

time.sleep(10)
user = self.driver.find_element_by_id("username")
time.sleep(10)

可以请任何人知道这件事,例如 运行 使用 chromrdriver 的案例可以正常工作,但是使用 phantomjs 即使在测试用例中访问 phantomjs.exe 之后它也无法正常工作。

根据您在评论中提供并随后在问题中更新的 HTML,您可以删除所有 time.sleep() 实例并将它们替换为 WebDriverWait如下:

  • CSS_SELECTOR:

    user = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.form-control#username")))
    
  • XPATH:

    user = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='form-control' and @id='username']")))