找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1868|回复: 3

[求助] 使用selenium.webdriver的ActionChain报错

0

主题

1

帖子

1

积分

贫民

积分
1
Qwert135 发表于 2021-8-22 15:09:47 | 显示全部楼层 |阅读模式
本帖最后由 Qwert135 于 2021-8-22 15:13 编辑

问题描述
我在使用selenium.webdriver的行为链时,向浏览器的文本输入框输入字符,发现最多只能够输入两个字符



版本信息:
python 3.9.0
pycharm 2019.2 社区版

selenium 3.8.0
chromedriver 92.0.4515.107
google chrome 92.0.4515.159


代码:
  1. #  豆瓣的案例

  2. import time
  3. from selenium import webdriver
  4. from selenium.webdriver import ActionChains

  5. driver = webdriver.Chrome()

  6. driver.get('https://www.douban.com/')

  7. # 定位豆瓣输入框
  8. inputTag = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[3]/form/span[1]/input')
  9. # 定位豆瓣按钮
  10. buttonTag = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[3]/form/span[2]/input')

  11. # 实例化
  12. act = ActionChains(driver)
  13. act.move_to_element(inputTag)
  14. act.click(inputTag)
  15. # 要输入的内容
  16. str = '你好,世界'
  17. act.send_keys_to_element(inputTag, str)

  18. # 点击按钮
  19. time.sleep(2)
  20. act.move_to_element(buttonTag)
  21. act.click(buttonTag)
  22. time.sleep(1)

  23. act.perform()
复制代码
图片:
图片1.jpg 图片2.jpg




补充:如果我把源代码中的要输入的内容str = '你好,世界',改成str = 'hello world',那么它只会输入he,我在百度中测试发现也是这样,它最多只能输入两个字符,请问这种情况我应该怎么解决啊?谢谢各位大佬。(PS;我今天是刚刚接触这个自动化测试工具,高级的操作也不明白)











回复

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
Qwert135  楼主| 发表于 2021-8-22 17:39:45 | 显示全部楼层
selenium版本太高,降级到selenium 2.48.0就完美解决
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
Qwert135  楼主| 发表于 2021-8-23 17:54:53 | 显示全部楼层
Qwert135 发表于 2021-8-22 17:39
selenium版本太高,降级到selenium 2.48.0就完美解决

不对啊,我用了一selenium3.8.0,然后代码是这个样子的
  1. import time
  2. from selenium import webdriver
  3. from selenium.webdriver import ActionChains

  4. driver = webdriver.Chrome()
  5. driver.get('https://www.douban.com/')

  6. input_tag = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[3]/form/span[1]/input')
  7. button_tag = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[3]/form/span[2]/input')

  8. act = ActionChains(driver)
  9. act.move_to_element(input_tag)
  10. act.click(input_tag)
  11. str = '觉醒年代'
  12. act.send_keys_to_element(input_tag, str).perform()
  13. time.sleep(2)

  14. act = ActionChains(driver)
  15. act.move_to_element(button_tag)
  16. act.click(button_tag).perform()

  17. time.sleep(1)
  18. driver.quit()
复制代码

这个样子是可以的,但是如果代码是下面这样的话
  1. import time
  2. from selenium import webdriver
  3. from selenium.webdriver import ActionChains

  4. driver = webdriver.Chrome()
  5. driver.get('https://www.douban.com/')

  6. # 定位
  7. input_tag = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[3]/form/span[1]/input')
  8. button_tag = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[3]/form/span[2]/input')

  9. act = ActionChains(driver)
  10. act.move_to_element(input_tag)
  11. act.click(input_tag)
  12. str = '觉醒年代'
  13. act.send_keys_to_element(input_tag, str).perform()
  14. time.sleep(2)

  15. act.move_to_element(button_tag)
  16. act.click(button_tag).perform()
  17. time.sleep(1)

  18. act.perform()
  19. driver.quit()
复制代码

那么我搜索的就是“觉醒年代觉醒”了

如果我把上面的act.click(button_tag).perform()改成act.click(),那么搜索的就是“觉醒年代觉”了,这是什么啊?呜呜呜
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2021-9-1 21:01:15 | 显示全部楼层
我用的没问题
Screenshot from 2021-09-01 21-00-05.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表