selenium PhantomJS send_keys 不起作用[英] selenium PhantomJS send_keys doesn't work

问题描述

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

推荐答案

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

Selenium 的 click() 会等待页面在点击后被重定向,而 send_key() 则不会等待.(PhantomJS 是无头的,比火狐快)

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

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

本文地址:https://www.itbaoku.cn/post/1739970.html