selenium的两种sendkeys差异

selenium的两种sendkeys差异

  • 一、两种需要输入的文本框
    • (一)第一种:常态的文本输入框
    • (二)第二种:特殊的文本输入框
  • 二、问题
  • 三、解决方法

预览:
报错:

'FirefoxWebElement' object has no attribute 'sendkeys'

方法:

actions.move_to_element(time_send).send_keys("2019-01-01").perform()#开始日期

成功截图:
selenium的两种sendkeys差异_第1张图片

一、两种需要输入的文本框

此处均以裁判文书网为例

(一)第一种:常态的文本输入框

selenium的两种sendkeys差异_第2张图片
元素类型一般均有input,即最后一个元素标签是“input"
例如:以下为该元素文本框的xpath路径,常态的这种文本框,等等输入内容的元素标签均为…框起来的
l
//*[@id="_view_1540966814000"]/div/div[1]/div[2]/input

(二)第二种:特殊的文本输入框

selenium的两种sendkeys差异_第3张图片

此处裁判日期处的文本框就是特殊的文本框,可以进行选择,但是一个个选择命令无疑比较麻烦,比较好的的方法就是sendkeys

其元素元素标签就可能不是“input",,此处为input


虽然都是…框起来的,但是后者点击时会加载一个可选的js文件即
selenium的两种sendkeys差异_第4张图片

二、问题

第二种文本框使用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()#开始日期

selenium的两种sendkeys差异_第5张图片

成功完成sendkeys任务

你可能感兴趣的:(鼠标键盘自动化,爬虫,selenium,html,selenium)