首页 > 编程语言 >selenium(Python)的缺陷总结

selenium(Python)的缺陷总结

时间:2022-09-21 20:00:19浏览次数:61  
标签:浏览器 Python selenium send js keys 设置 界面 缺陷

Message: Browsing context has been discarded

这是一个稀里糊涂的错误,有时候会无缘无故冒出来。据网上的消息说,是原先的内容已经不在了导致的...

没有找到解决办法,这种错误有时候又会消失....嗯,很奇怪

填入文本框的速度太慢

用火狐浏览器当driver的时候,它自带的方法.send_keys()每秒只能输入几千个字符串;

当要模拟输入的字符串有短短的几十万个时,就会卡在这几分钟,这是完全不能接受的。要知道,手动复制粘贴到同样位置都是能瞬间完成的。

网上提供的方法大致有两个:1.send_keys() ;2.通过js设置textarea或者innerText的内容。

实际测试表明,后者也没有用。后者在设置时是有效的,能看见框里有文本,但提交文本后,真正提交上去的内容仍然是空的。

经过无数次测试和研究,发现先通过js设置文本,再通过.send_keys()方法传入任何字符串(比如一个空字符“ ”),就能解决这个问题。

示例:

d = webdriver.Firefox()
...
d.find_element(*text_area_locator).clear() # 清空原文本框 js = '$("textarea").val("%s");'%content # content:要输入的内容 d.execute_script(js) # 通过js改变textarea内容 time.sleep(1) # 等待1秒,防止浏览器响应跟不上程序 d.find_element(*text_area_locator).send_keys(' ') # 发送一个空格

容易找不到某个iframe或者iframe内的元素

暂无解决方法,可能是日志文件的影响,可以删掉geckodriver.log或者用稳定的无界面模式(headless)试试。

geckodriver无界面(headless)能够绕过一些网站的检测,稳定性比有界面高

有的网站用无界面的Chromedriver会被防火墙识别,但是换成无界面的火狐浏览器就识别不出来。

默认下载路径的设置:使用Options.set_preference('driver.download.dir', 绝对路径)

设置默认下载路径要用绝对路径,因为程序是通过火狐读取配置文件实现的配置,你填的相对路径会变成配置文件对应的相对路径,所以没有对应相对路径文件夹时你的设置就会失效,变成默认的下载路径。

日志文件会影响浏览器的行为,有时候会直接跳过一些操作,导致错误或者阻塞

原因未知,反正删掉日志文件这个症状就好了。

总体评价:geckodriver不稳定,但方便绕过检测、对浏览器版本没有要求。鸡肋,食之无味弃之可惜。如果情况不是很特殊,建议用稳定的Chromedriver,但用Chrome也对应着 版本不同 会出暗错(找不到明明出现的元素)或无法运行的弊端。

标签:浏览器,Python,selenium,send,js,keys,设置,界面,缺陷
From: https://www.cnblogs.com/roundfish/p/16716958.html

相关文章

  • 初学python的建议。
    今日内容总结一.记录好每一天的笔记对于我们初学者来说,就好每一天的上课内容来说是至关重要的,我个人比较推荐typora这款文本编辑器。对于这款编译器的安装路径,尽量不要......
  • Python——索引与切片
    #索引与切片##1.序列序列:list,tuple,str其中list是可变序列typle,str是不可变序列#修改序列的值list=[3,4,5]tup=(3,4,5)str='345'list[1]=99listoutp......
  • python1
    python课程总结(1)1.今日内容概要typora软件--下载与安卓--文件路径--主要功能markdown语法网络博文编写教程计算机的本质计算机的五大组成部分计算机......
  • python-Typora的安装及应用
      Typora软件是一个文本编辑器,可以记录文字类似于word,可以用来日常记笔记,学习代码,界面简洁,清晰,方便日常工作。安装        安装时尽量装在其他盘不要......
  • python django request接收UIRL传参
    POST方式:ifrequest.method=='POST':body_str=request.body.decode('utf-8')post_data=parse_qs(body_str)post_dict={}......
  • Python3-eg
    实例01(判断输入的是不是黄蓉所说的数)1print("今有物不知数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")2number=int(input("请输入您认为符合条件的数:"))......
  • python-D1-typora软件和计算机入门1
    一typora软件typora是一款目前非常火爆文本编辑器1.1安装尽量安装在非系统盘符及设置为短路径,方便后面查找1.2文件路径在计算机上就是一个资源的定位坐标,表现为具......
  • python学习日记
    今日课堂内容总结:计算机的五大组成部分及功能:1.控制器:控制计算机各个硬件的工作2.运算器:进行数学运算以及逻辑运算3.存储器:分为短期记忆和长期记忆4.输出设备:接受外......
  • Ubuntu上安装python连接oracle数据库的包
    转载地址 https://blog.csdn.net/buluxianfeng/article/details/125376955  wgethttps://download.oracle.com/otn_software/linux/instantclient/217000/oracle-......
  • 1、python入门篇 typora的安装和常用语法及对计算机的认知
    一、typora软件typora是一款Markdown编辑器和阅读器风格极简/多种主题/支持macOS,Windows及Linux实时预览/图片与文字/代码块/数学公式/图表目录大纲......