Selenium PhantomJS send_keys不起作用。

6

我正在使用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个回答

7
我高度怀疑这只是时间问题。
Selenium的`click()`方法会在点击后等待页面加载,如果重定向,则不会等待,而`send_key()`方法则不会等待。(PhantomJS是无头浏览器,比Firefox更快)
请尝试在`elem.send_keys(Keys.RETURN)`后添加一些休眠,例如`time.sleep(5)`,然后再执行`print driver.title`,看看是否可以获得您想要的结果。
在真实的测试项目中,您只需要使用WebDriverWait,直到`driver.title`等于您想要的值为止。

4
我刚遇到了同样的问题。 是一个时间问题,但是Keys.RETURN对我没有用,我需要使用Keys.ENTER。 我从https://github.com/detro/ghostdriver/issues/249得到了灵感。 - Timotheus Pokorra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接