selenium的两种sendkeys差异
预览:
报错:
'FirefoxWebElement' object has no attribute 'sendkeys'
方法:
actions.move_to_element(time_send).send_keys("2019-01-01").perform()#开始日期
成功截图:
一、两种需要输入的文本框
此处均以裁判文书网为例
(一)第一种:常态的文本输入框
元素类型一般均有input,即最后一个元素标签是“input"
例如:以下为该元素文本框的xpath路径,常态的这种文本框,等等输入内容的元素标签均为…框起来的
l
//*[@id="_view_1540966814000"]/div/div[1]/div[2]/input
(二)第二种:特殊的文本输入框
此处裁判日期处的文本框就是特殊的文本框,可以进行选择,但是一个个选择命令无疑比较麻烦,比较好的的方法就是sendkeys
其元素元素标签就可能不是“input",,此处为input
<input class="laydate-icon ldt dropdown-text" id="cprqStart" type="text" style="width:117px;" lay-key="1">
虽然都是…框起来的,但是后者点击时会加载一个可选的js文件即
二、问题
第二种文本框使用sendkeys时就会报错
"""审判日期:2019"""
time_send = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="cprqStart"]')))
time_send.click()
time_send.sendkeys("2019-01-01")
此时报错
'FirefoxWebElement' object has no attribute 'sendkeys'
三、解决方法
参见罗 小双 和 熊 虎:《Selenium WebDriver 中鼠标和键盘事件分析及扩展》,链接: 《Selenium WebDriver 中鼠标和键盘事件分析及扩展》.
在这篇文章中发现selenium中的sendkeys竟然存在两类,一类是常用的WebElement.sendKeys,一类是Selenium WebDriver的Actions类中的sendKeys方法,介绍参见大鵬:《【学习笔记】Selenium WebDriver的Actions类中的sendKeys方法和WebElement.sendKeys方法的区别》,链接: 【学习笔记】Selenium WebDriver的Actions类中的sendKeys方法和WebElement.sendKeys方法的区别》.
既然WebElement.sendKeys不行,报错”FirefoxWebElement’ object has no attribute ‘sendkeys’“,那就换一种
"""审判日期:2019"""
time_send = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="cprqStart"]')))
time_send.click()
actions.send_keys_to_element(time_send,"2019-01-01")
actions.send_keys_to_element,这个是actions自动提示的方法,不知道为什么不行,可能自己用错了
于是换成了
"""审判日期:2019"""
time_send = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="cprqStart"]')))
time_send.click()
actions.move_to_element(time_send).send_keys("2019-01-01").perform()#开始日期
成功完成sendkeys任务