【问题标题】:Selenium webdriver find_element_by_id() method in python throws error with phantomjspython 中的 Selenium webdriver find_element_by_id() 方法使用 phantomjs 引发错误
【发布时间】:2018-07-03 14:06:33
【问题描述】:

基于 selenium webdriver 的 python 上的 web 测试用例在使用 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请
  • 在这里
  • @user3157061:你的代码对我来说很好,你能告诉我们你得到什么样的异常吗?

标签: python-3.x selenium xpath css-selectors phantomjs


【解决方案1】:

根据您在 cmets 中提供并随后在问题中更新的 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']")))
    

【讨论】:

  • IMO,这将不起作用,尽管您已经更改了定位器并使用了显式等待,但请注意,OP 正在使用 time.sleep(10),这是最糟糕的显式等待。所以我们可以消除显式等待的可能性。尽管为了给出正确的答案,我们需要知道他/她遇到了什么样的异常。
  • 我刚刚解决了这个问题;现在我得到另一个关于使用 phantomjs 的 send_keys 问题。我正在使用此代码: password = wait(self.driver, 10).until(EC.presence_of_element_located((By.XPATH, "//input[@id='password']"))) password.send_keys("pass1234 ")
  • @user3157061 您能否根据您的新要求提出一个新问题? Stackoverflow 志愿者很乐意为您提供帮助。
猜你喜欢
  • 2015-07-04
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 2017-04-11
  • 2015-12-06
  • 2017-02-02
  • 1970-01-01
相关资源
最近更新 更多