使用send_keys Internet Explorer时,先前的评估未完成错误

时间:2017-12-21 07:29:18

标签: python python-2.7 unit-testing selenium

我使用的是Python 2.7,而selenium是3.4.3:

search_field= self.driver.find_element(By.ID ,'Searchbox')  
time.sleep(10)
search_field.send_keys('test' + Keys.RETURN)

适用于Chrome& Firefox,但是当我使用它时它在IE中不起作用:

search_field.send_keys('test' + Keys.RETURN)

它将返回错误:

previous evaluation has not completed.

如何让send_keys工作?

添加Html

<div>
<input type="text" value="" id="Searchbox" name="name" class="input-xlarge search-query searchInput" style="padding:3px;" data-reactid=".0.1.0.0.0.1.0.0.1.0.0.1">
<span class="btn btn-small btn-warning" style="border-radius:0px;padding-left:3px;padding-right:3px;height:28px;margin-left:1px;" data-reactid=".0.1.0.0.0.1.0.0.1.0.0.2"><i class="icon-search icon-on-right bigger-110" data-reactid=".0.1.0.0.0.1.0.0.1.0.0.2.0"></i></span>
</div>

2 个答案:

答案 0 :(得分:2)

错误说明了一切:

previous evaluation has not completed

一个简单的解决方案是在多个语句中分解复合语句,如下所示:

search_field.send_keys("test")
search_field.send_keys(Keys.RETURN)

更新:

根据您在问题中更新的HTMLsend_keys标记内的<input>您可以使用以下任意一行代码:

self.driver.find_element(By.XPATH ,"//input[@id='Searchbox']").send_keys("test")
#or
self.driver.find_element(By.XPATH ,"//input[@name='name']").send_keys("test") 
#or
self.driver.find_element(By.XPATH ,"//input[@class='input-xlarge search-query searchInput' and @id='Searchbox']").send_keys("test")

答案 1 :(得分:1)

根据您的情况使用以下代码:

search_field = self.driver.find_element(By.ID ,'Searchbox')
time.sleep(10)
search_field.send_keys('test')

search_button = self.driver.find_element(By.CSS_SELECTOR, '.btn.btn-small.btn-warning')
time.sleep(10)
search_button.click()

希望它可以帮到你!

PS:BTW,您可以使用显式或隐式等待而不是time.sleep(10)