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秒,也没有再报错。

python selenium 问题汇总的更多相关文章

  1. WEB自动化(Python+selenium)的API

    在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                         ...

  2. Python Selenium 文件上传之SendKeys

    昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...

  3. Python selenium的js扩展实现

    python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制 ...

  4. 【Python + Selenium】之JS定位总结

    感谢:小琰子 Python+Selenium 脚本中的一些js的用法汇总: 1.滚动条 driver.set_window_size(500,500) js = "window.scroll ...

  5. python+selenium 简单尝试

    前言 selenium是一种自动化测试工具,简单来说浏览器会根据写好的测试脚本自动做一些操作. 关于自动化测试,一开始接触的是splinter,但是安装的时候发现它是基于selenium的,于是打算直 ...

  6. python+selenium 浏览器的问题

    以前用selenium调用firefox是不需要驱动的,最近安装了python3.52+最新的firefox 发现调不起来了 搜索以后发现Firefox 47+需要搞个firefox的驱动 gecko ...

  7. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  8. Python + Selenium 实现登录Office 365

    最近捡起之前用的Python + Selenium实现工作中需要的登录Office 365功能.(吐槽:国内网络真是卡,登录Office 365实属不易.另外Selenium这样的网站都要墙,无法理解 ...

  9. python+selenium+Robot

    准备工作: 1.下载python2.7 http://python.org/getit/ 2.下载下载setuptools [python 的基础包工具] 可以帮助我们轻松的下载,构建,安装,升级,卸 ...

随机推荐

  1. 配置total commander 显示所有或特定文件夹 (带点的文件夹)

    在配置|忽略列表 下可以添加或删除需要隐藏的文件夹通配符.

  2. 使用MyEclipse设置所需配置的iOS应用

    MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] 一.iOS应用程序配置要求 这个进程需要四个需求数据文件: 证书签名请求(CSR)文件 证书签名请 ...

  3. DevExpress v17.2新版亮点—WinForms篇(四)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.开篇介绍了DevExpress WinForms v17.2 Data Grid Control ...

  4. 《JAVA---day03---运算符》

    /*[位运算符] 运算符: 运算 范例 说明 <<: 左移 3<<2=12--->3*2*2=12 >>: 右移 3>>2=1---->3/ ...

  5. [转载]三款SDR平台对比:HackRF,bladeRF和USRP

    这篇文章是 Taylor Killian 13年8月发表在自己的博客上的.他对比了三款平价的SDR平台,认为这三款产品将是未来一年中最受欢迎的SDR平台.我觉得这篇文章很有参考价值,简单翻译一份转过来 ...

  6. 导出导入grafana完整的dashboard(非单个图表)

    导出很简单,如下图操作即可 导入

  7. linux rinetd、socat端口转发部署(很实用的网络工具)

    端口转发映射的程序叫rinetd,下载地址,直接manke编译安装即可. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@PortForward02 src] ...

  8. UI基础:UIScrollView、UIPageControl

    UIScrollView UIScrollView 是可以滚动的视图,UIView本身不能滚动,子类UIScrollView扩展了滚动方面的功能. UIScrollView 是所有滚动视图的基类.以后 ...

  9. JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用

    JavaWeb中监听器+过滤器+拦截器区别.配置和实际应用 1.前沿上一篇文章提到在web.xml中各个元素的执行顺序是这样的,context-param-->listener-->fil ...

  10. 详解基本TCP套接字函数

    以下讲解基本TCP套接字函数. 1.socket 函数   指定期望的通信协议类型.    #include <sys/types.h> /* See NOTES */ #include  ...