使用selenium获得的cookies测试没有问题,但是获得的heards头不可以使用,经过测试比较 需要添加或者修改几项重点的heards为
获得新的heards后直接用代码
element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, “myElement”)) )
element = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, “button.myButton”)) )
就用selenium登录后调用方法获取就行
然后切分cookies使得可以直接使用
这个部分正常的selenium是获得不了的,需要用到另一个库:seleniumwire 通过这个库的方法可以获得浏览器的heards,再添加一些关键词,就可以实现获得可用的heards
这样就得到了可以直接使用的headrs
同时有个重要的功能就是上面的
无界面也就是常说的无头模式的浏览器,这样的浏览器不会显示界面,比较适用于不需要和页面互动的任务或者想提升效率的任务
在selenium中,很多报错是因为元素点击不了,有很多原因,有可能是被挡住了,有可能是有一部分被挡住了,有可能是还没有加载出来,有一个解决百分之80的办法就是使用js,没必要使用selenium自带的移动模拟鼠标和点击,直接使用js,点击元素最为方便
通用还有好处是,js点击不会报错,常用的场景是,有一个广告,并不是每次都会出现,如果你要是点击他但是没有还会报错,用js就可以解决这个问题,js执行之后不论成功不成功,并不会报错,比较安全 js还有个常用的功能是滚动到目标元素的位置,通过这个方法可以解决那些因为元素不在界面所以无法点击的问题,常见的情况是:在一个界面中有多选框,点开之后有一部分在下面再遮挡
selenium有时候有的元素不确定什么时候才会加载好,个人觉得好使的方法有两种,一种是等待这个元素直到他可以被点击为止:
第二种是,等待这个元素直到这个元素加载完成:
注意,要导入的库WebDriverWait和EC
需要为创建驱动这个方法创建一个工具类:
这两个方法在工具类中可以做到创建驱动和关闭驱动,在主flask文件导入这个模块的WebDriverManager之后调用get或close方法就可以使用同一个驱动了,亲测可用
可以更方便的定位元素,更加人性化的设计
方法1
可以给不边的对象用列表然后长度和迭代的对齐来解决,即:[不变的变量]*len(变的对象的长度)
1
2
3
y轴自动划分精度
在中间绘制一条虚线,用来整平均值
设置 y 轴的取值范围和刻度