例子:
# method 1
from selenium import webdriver
PATH = '...'
driver = webdriver.Chrome(PATH)
driver.get('https://google.com')
driver.find_element_by_name('q').send_keys('test')
# method 2
from selenium import webdriver
from selenium.webdriver.common.by import By
PATH = 'c:\\Program Files (x86)\\chromedriver.exe'
driver = webdriver.Chrome(PATH)
driver.get('https://google.com')
driver.find_element(By.NAME, 'q').send_keys('test')
基本上,我想知道:
1 - 兩者之間有區別嗎?如果有,它們是什么?
2 - 一般來說,這些之間有區別嗎?
find_element_by_class_name(el): find_element(By.CLASS_NAME, el);
find_element_by_name(el): find_element(By.NAME, el)
3 - 為什么DeprecationWarning執行第一個方法時會顯示一個?
uj5u.com熱心網友回復:
它們是相同的,find_element_by_name呼叫find_element方法和傳遞By.NAME給by引數。這是源代碼:
def find_element_by_name(self, name):
"""
Finds an element by name.
:Args:
- name: The name of the element to find.
:Returns:
- WebElement - the element if it was found
:Raises:
- NoSuchElementException - if the element wasn't found
:Usage:
element = driver.find_element_by_name('foo')
"""
return self.find_element(by=By.NAME, value=name)
所有方法都是具有不同引數find_element_by_*的呼叫方法。您應該查看 selenium類源代碼以了解詳細資訊。find_elementbywebdriver
這是硒官方 api 檔案。https://www.selenium.dev/selenium/docs/api/py/_modules/selenium/webdriver/remote/webdriver.html#WebDriver
uj5u.com熱心網友回復:
正如@GuiHva 還提到的,這兩行之間沒有區別:
driver.find_element_by_name('q')
和
driver.find_element(By.NAME, 'q')
與當前版本一樣 硒4 find_element_by_name(name)引擎蓋下的Python客戶端仍然呼叫:
self.find_element(by=By.NAME, value=name)
但伴隨著DeprecationWarning。
find_element_by_name()的當前實作如下:
def find_element_by_name(self, name) -> WebElement:
"""
Finds an element by name.
:Args:
- name: The name of the element to find.
:Returns:
- WebElement - the element if it was found
:Raises:
- NoSuchElementException - if the element wasn't found
:Usage:
::
element = driver.find_element_by_name('foo')
"""
warnings.warn(
"find_element_by_* commands are deprecated. Please use find_element() instead",
DeprecationWarning,
stacklevel=2,
)
return self.find_element(by=By.NAME, value=name)
為什么會發生這種變化
如前所述:_@AutomatedTester
決定是簡化跨語言的 API,并且這樣做了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412121.html
標籤:
上一篇:查找具有多列的相似記錄
下一篇:列舉的Python比較?
