我使用的是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>
对您的案例使用以下代码:
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)
。
错误说明了一切:
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")