关于Python selenium,无法使用,find_element求大神指点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Python selenium,无法使用,find_element求大神指点相关的知识,希望对你有一定的参考价值。

求问大神,我在pycharm 中无法调用 find_element等函数,一出来就划上中横线,执行也执行不了,不知道是哪个环节出错了,请求大神指点

题主你好,

首先来说你的代码不能正确执行的最终原因是下面这两个函数没有正确调用,这两个函数都是有参数的:

你第一个函数的调用就是正确的:

-----

再者说, find_XXX函数加了下划线并不代表它们不能用, 只是不建议用了,而且元素定位和网址请求的一般用法还不太一样,

网址请求的用法一般是:  driver.get('https://www.baidu.com/')

元素定位用法一般是: name = driver.find_element_by_id('kw')

可以看到上面两个的区别是网址请求前面没有变量, 而元素定位前面是有变量的, 因为你元素定位之后你还要使用该变量进行下一步的操作,如点击等,如果你没有定义变量,元素定位完成了你想对这个元素进行操作要怎么办(单个元素定位可以通过下划线,_,来代表变量,多个就没法弄了,这句话不理解你可以忽略).

所以下面把你的代码修改一下:

上面代码其实没改啥,就是给元素定位加了一个变量input, 最后那句是我自己加上去的, 意思说白了就是往百度搜索输入框中输入内容 "hello friend!",加上这句你能看到效果.

*.就上面的代码你仍然还是会看到find_element_by_id会有删除线, 但没有关系不影响使用(有删除线只是告诉你这种用法被废弃了, 或者你也可以理解不推荐使用这种用法了)

-----

最后说一下推荐用法,

其实和上面所讲的废弃的方法差不多,与上面的方法相比,有两点不同

    多导入了一个By包,用来指定元素定位的种类(一会儿举例子就知道怎么用了)

    元素定义的方法统一为find_element(),具体使用啥定位放在了函数中作为第一个参数.

下面把题主的例子用推荐的方法写一下:

通过上图可以看出,第二行是多出来的,用来导入By包,然后就是元素定位的写法,方法名只剩一个find_element,而具体导找元素定位的方式By.ID放到了方法中作为其第一个参数, 第二个参数为具体要查找的内容.

-----

总结: 上面总共给出了两种元素定位的写法, 后一种写法并不是新版本中才有的, 以前的版本中两种方法就都有, 猜测新版本中为了让大家统一使用后一种用法或是以后只维护后一种写法的代码了,所以才把头一种元素定位的方法给加上了删除线,既然加上了删除线可能在以后的某个版本就会不支持这种写法了,所以推荐题主还是使用后一种写法.

-----

扩展阅读:

当前By包中支持通过以下几种方法进行定位:

=====

希望可以帮到题主, 欢迎追问.

参考技术A 下面给错误原因了啊deprecated过时了。
please use 请用。。。。。
这个表达太老了,版本更新已经不用了,让你用新的表达方式呢。追问

请问,我应该怎么做用新的版本呢?求大佬指点,
目前 Python版本3.10、
selenium版本4.10

参考技术B 麻烦你看一下官方文档,或者直接ctrl+B到对应的过时api处,一般会提示新api的使用方法。

以上是关于关于Python selenium,无法使用,find_element求大神指点的主要内容,如果未能解决你的问题,请参考以下文章

使用 Selenium 和 Python 和 Safari 查找 CVV

python selenium模块使用出错-selenium.common.exceptions.WebDriverException: Message: 'geckodriver'

selenium+python关于使用selenium时的几个问题1

Python(81)_selenium定位页面元素

Python Selenium 文件上传

无法使用 unittest 使用 python 运行 selenium