5

我正在使用 selenium 和 PhantomJS 进行测试。我遵循了 Selenium 的简单用法,但是 send_keys 不适用于 PhantomJS,它适用于 Firefox。为什么?我必须button.click()改用?

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys

reload(sys)
sys.setdefaultencoding('utf-8')
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.PhantomJS()

driver.get("http://www.python.org/")
elem = driver.find_element_by_id("q")
elem.clear()
elem.send_keys("python")
elem.send_keys(Keys.RETURN)
# button = driver.find_element_by_id('submit')
# button.click()
print driver.title
print driver.page_source
driver.close()
4

1 回答 1

7

我高度怀疑这只是时间问题。

如果单击后重定向, Seleniumclick()将等待页面加载,而send_key()不会等待。(PhantomJS 是无头的,比 Firefox 快)

请尝试添加一些 sleep ,例如time.sleep(5)after elem.send_keys(Keys.RETURN), before print driver.title,看看是否可以获得您想要的结果。

在实际测试项目中,您只需要使用 WebDriverWait 直到driver.title等于您想要的值。

于 2013-07-23T02:55:49.183 回答