启动功能时
def run(driver_path):
driver = webdriver.Chrome(executable_path=driver_path)
driver.get('https://tproger.ru/quiz/real-programmer/')
button = driver.find_element_by_class_name("quiz_button")
button.click()
run(driver_path)
我收到如下错误:
<ipython-input-27-c5a7960e105f>:6: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(executable_path=driver_path)
<ipython-input-27-c5a7960e105f>:10: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
button = driver.find_element_by_class_name("quiz_button")
......但我不明白为什么。
我正在使用最新版本的WebDriver为我的Chrome版本。我不知道为什么我得到
find_element_by_* commands are deprecated
...当文档中有该命令时。
4条答案
按热度按时间ikfrs5lh1#
此错误消息...
...表示在最新的Selenium Python库中不赞成使用
find_element_by_*
命令。正如AutomatedTester提到的:此 DeprecationWarning 反映了针对简化跨语言API的决策所做的更改,而这正是所做的更改。
溶液
而必须使用
find_element()
。例如:必须包括以下导入
class_name
:需要替换为:
沿着的思路,您还必须更改以下内容:
id
:需要替换为:
name
:需要替换为:
link_text
:需要替换为:
partial_link_text
:需要替换为:
tag_name
:需要替换为:
css_selector
:需要替换为:
xpath
:需要替换为:
型
**注意:**如果您要搜索与替换以实现上述更改,则需要对
find_elements_*
(即find_element_*
得复数形式)执行相同得操作.您可能还会发现本升级指南很有用,因为它涵盖了升级时可能需要进行的一些其他不相关的更改:***
qxgroojn2#
@DebanjanB提到并解释了新的结构。另外,最好使用这些行:
nukf8bse3#
正如其他人提到的,您应该使用
find_element()
或find_elements()
,而不是find_element_by_*()
或find_elements_by_*()
。我编写了regex模式来将过时的方法替换为新方法,所以如果需要的话可以尝试一下。
注意:您需要导入行才能使用新方法
j9per5c44#
感谢@Stephen和 undetected Selenium 的回答。在阅读了一段时间关于如何在哪里找到
send_key
的例子之后,我发现了一个惊人的例子要点。下面的
send_keys
示例对我很有效:test_key_down(browser)