selenium PhantomJS send_keys不起作用

时间:2013-07-23 02:35:30

标签: python selenium selenium-webdriver phantomjs

我正在使用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()

1 个答案:

答案 0 :(得分:7)

我非常怀疑这只是时间问题。

Selenium的click()会在点击后重定向,等待页面加载,send_key()不等待。 (PhantomJS是无头的,比Firefox更快)

请在time.sleep(5)之前elem.send_keys(Keys.RETURN)之后尝试添加一些像print driver.title一样的睡眠,看看你是否能得到想要的结果。

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