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

问题描述 投票:1回答:2

我使用的是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>
python python-2.7 unit-testing selenium
2个回答
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)


2
投票

错误说明了一切:

previous evaluation has not completed

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

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

更新:

根据您在问题中更新的HTML,在send_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")
© www.soinside.com 2019 - 2024. All rights reserved.