FAQ

1.python+selenium+Safari浏览器,定位元素

selenium.common.exceptions.ElementNotVisibleException: Message: An element command could not be completed because the element is not visible on the page.

在GitHub上有人提出过同样的问题,https://github.com/SeleniumHQ/selenium/issues/5355,有一个回答如下:



可以参考https://bugs.webkit.org/show_bug.cgi?id=174710,这个bug在Safari开发版已经修复,但并未发布。

那么怎么解决Safari浏览器的点击问题呢?



解决方法如下:

通过调用js的方法进行操作

execute_script(script, *args)
#Example:
ele = browser.find_element_by_xpath('//*[@id="1$Menu"]/li')
browser.execute_script('arguments[0].click();', ele)

2.python3+selenium 3.13 + geckodriver 21.0,提示ConnectionResetError,切换为较低版本的driver即可

学习selenium时,如果sleep时间大于等于5秒,就会提示ConnectionResetError: [Errno 54] Connection reset by peer。

换成chrome浏览器,可以正常运行。

demo.py

from selenium import webdriver
from time import sleep, ctime
#chrome
#driver = webdriver.Chrome(executable_path='//Users/csj/Desktop/seleniumdriver/chromedriver/chromedriver')
#Firefoxdriver 21.0
driver = webdriver.Firefox(executable_path='//Users/csj/Desktop/seleniumdriver/firefoxdriver/21.0/geckodriver')
#Firefoxdriver 20.1
#driver = webdriver.Firefox(executable_path='//Users/csj/Desktop/seleniumdriver/firefoxdriver/20.1/geckodriver')
#Firefoxdriver 20.0
#driver = webdriver.Firefox(executable_path='//Users/csj/Desktop/seleniumdriver/firefoxdriver/20.0/geckodriver')
#Firefox 19.1
#driver = webdriver.Firefox(executable_path='//Users/csj/Desktop/seleniumdriver/firefoxdriver/19.1/geckodriver')
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
print(ctime())
sleep(5)
print(ctime())
driver.find_element_by_id("kw").send_keys("selenium")
driver.close()

使用Firefoxdriver 21.0,报如下错误:

Traceback (most recent call last):
File "/Users/csj/PycharmProjects/untitled/demo.py", line 13, in <module>
driver.find_element_by_id("kw").send_keys("selenium")
File "/Users/csj/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 353, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "/Users/csj/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 957, in find_element
'value': value})['value']
File "/Users/csj/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
response = self.command_executor.execute(driver_command, params)
File "/Users/csj/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/remote_connection.py", line 472, in execute
return self._request(command_info[0], url, body=data)
File "/Users/csj/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/remote_connection.py", line 496, in _request
resp = self._conn.getresponse()
File "/Users/csj/anaconda/lib/python3.6/http/client.py", line 1331, in getresponse
response.begin()
File "/Users/csj/anaconda/lib/python3.6/http/client.py", line 297, in begin
version, status, reason = self._read_status()
File "/Users/csj/anaconda/lib/python3.6/http/client.py", line 258, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/Users/csj/anaconda/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
ConnectionResetError: [Errno 54] Connection reset by peer

换成chrome,可以正常运行。老板提醒可能是版本的问题,分别用 Firefox 20.1, 20.0, 19.1,均能运行成功,没有再提示ConnectionResetError。

休眠时间设置为10秒,也没有再报错。

最新文章

  1. 地图中插入表格——ArcMap篇
  2. HTTP状态码对应
  3. 《zw版&#183;Halcon-delphi系列原创教程》 Halcon分类函数007, match,图像匹配
  4. linux 查看系统信息命令(比较全)
  5. .NET如何从配置文件中获取连接字符串
  6. Archiving
  7. Objective-C 协议(protocol)
  8. Android权威编程指南读书笔记(1-2章)
  9. Jquery的$命名冲突
  10. 关键在封装并发出了帧-IP冲突也无所谓
  11. Code Complete阅读笔记(一)
  12. yii框架数据库操作数据访问对象(DAO)简单总结
  13. 怎么使用CURL传输工具发送get或者post指令
  14. 对Java原子类AtomicInteger实现原理的一点总结
  15. wigs的理解和应用
  16. UML建工工具
  17. JavaScript字符串相关
  18. 在postgresqlz中查看与删除索引
  19. 【CF908G】New Year and Original Order 数位DP
  20. 关于clearfix和clear的讨论

热门文章

  1. CentOS 7 目录布局变化
  2. 用redis做简单的任务队列(二)
  3. ansible with_subelements
  4. 太完美 TWM000极度精简版XP20130123终结美化版
  5. L228 the complicated issue of equality: non-disabled actors play disabled roles
  6. Locust 测试结果通过Matplotlib生成趋势图
  7. [LeetCode&amp;Python] Problem 566. Reshape the Matrix
  8. 注解JAVA对象(基于Hibernate4.3)
  9. scanner 在java中的输入
  10. Hibernate有五大核心接口,分别是:Session Transaction Query SessionFactoryConfiguration