python中如何调用js文件中的方法呢

python中如何调用js文件中的方法呢,第1张

1、打开pycharm开发工具,点击File菜单,选择Settings...,进行第三方模块安装;输入selenium,点击Install Package。

2、接着在python项目的指定文件夹下,鼠标右键新建python文件,输入文件名并点击Python file。

3、打开新建的文件,依次导入selenium、webdriver和time。

4、调用webdriver模块中的Chrome(),使用get()获取对应网址的内容。

5、调用find_element_by_id()获取对应页面元素,然后调用按钮点击事件。

6、修改get()方法中的请求路径,然后保存代码并运行文件,查看运行结果。

当你修改那个隐藏字段的值时(你肯定是用JS改的吧?),同时修改那个 i 标记的text不就行了?用jQ写的话:

var val = 1988

$('input[name="dateForm.year"]').val(val)// 这段代码你应该已经写了

$('.sVal').text(val)// 再加上这段,但请注意class为sVal的标记应该只有这一个,否则……

如果你不想用jQ,当然也没问题,但需要稍微多写点兼容代码(该死的IE8!),如果需要请追问。

selenium webdriver的硬伤在于它无法真正判断页面上的元素什么时候能生成完毕,换句话说 ,假如获取页面上的元素失败,而这个元素是由js,ajax生成并且是未知的情况下(例如:要抓取网页关键词,但是关键词的内容是什么,一共有几个都是未知的情况下) 你无法判断是元素尚未被生成还是页面原本就没有这个元素导致的获取失败。

刚才说webdriver无法真正判断页面元素生成完毕,但webdriver提供了判断页面是否加载完成的方法,只不过这个加载完成的含义是页面上的html和JS代码加载完成,但js,ajax还可能在html和JS加载完之后执行从而改变页面上的内容,所以像刚才举例的网页上的关键词抓取失败就很难判断是js,ajax没有运行完毕还是页面上原本就没有这个元素导致的。

虽然selenium webdriver没有提供判断页面上的js,ajax是否执行完毕的功能,但不等于完全没有办法判断。官方也承认并不是不可以而是非常困难。昨天群里一位高手也说这种情况需要自行查看页面上的动态脚本代码以得知判断页面执行完的条件。我相信一个第三方库是比较难做到这一点的,即使牛逼到能实现,也不排除页面上有一个持续或者定时与服务器通信的动态脚本在实时改变页面内容,这样一来页面永远没有生成完毕的那一刻。

对于刚才说的抓取页面上未知元素,目前普遍的做法是在程序里面显示指定等待一段时间,确保有足够的时间让它生成,当然,不排除网络太差直到等待超时也来不及生成的情况。如果元素已知,可以显示用selenium webdriver提供的方法显示等待某一个元素在页面上出现后再继续执行下面的代码。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11364213.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存