Selenium find_elements 函数 return 对象 (Selenium 4)

Selenium find_elements function return Object (Selenium 4)

谢谢你的帮助。

我通常使用 Selenium 2,3 但今天我尝试使用 Selenium 4 来使用新功能 Relative Locators 。我做了一个简单的查找表达式,但它总是 return 奇怪的对象,如下所示

> print(driver.find_element(By.TAG_NAME, "a"))
{'ELEMENT': '0.4746792741017858-194'}

或者我找到倍数

> print(driver.find_elements(By.TAG_NAME, "a"))
[{'ELEMENT': '0.4746792741017858-178'}, {'ELEMENT': '0.4746792741017858-179'}]

我希望它是 return WebDriver 对象,但它没有 这是代码和打印语句的图像。 有人知道这件事吗? 非常感谢!

我运行你的代码

print(driver.find_element(By.TAG_NAME, "a"))

selenium 3 上的输出:

<selenium.webdriver.remote.webelement.WebElement (session="251a91865546a6c66596a267e20688d1", element="a36e87f3-bf6a-475c-82e4-07e4febe0dc5")>

selenium 4 上的输出:

[[ChromeDriver: chrome on WINDOWS (cbd87e312a3869b75a472d747371fd57)] -> tag name: a]

以及您的期望:

I expect it return WebDriver Object, but it doesn't

请注意 driver.find_element(By.TAG_NAME, "a") 将始终 return 一个网络元素。它不会 return 网络驱动程序对象。

您可以在网络元素上执行 .text.send_keys.click 等方法

更新:

driver.get('https://www.google.com/')
driver.find_element(By.NAME, 'q').send_keys('etc')

我终于找到了这个问题的答案。 这是我的设置:

chromedriver: 71.0.3578.80
chromebrowser: 99.0
selenium: 4

基本上,我使用的是仅支持以上 chromedriver 的 Selenium 4:> 92。但是我的 chromedriver v.71 -> 过时了。

所以这就是它不兼容的原因。因此,如果您选择 selenium 4,请检查您的 chromedriver 版本。