在python中我有:
driver.find_elements(by=By.TAG_NAME, value='a')
如何更改此行以包含b, c, detc... 值?
我試過了,但沒有用:
driver.find_elements(by=By.TAG_NAME, value='a', Value='b')...
uj5u.com熱心網友回復:
如果我們看一下源代碼find_elements
def find_elements(self, by=By.ID, value=None):
"""
Find elements given a By strategy and locator. Prefer the find_elements_by_* methods when
possible.
:Usage:
elements = driver.find_elements(By.CLASS_NAME, 'foo')
:rtype: list of WebElement
它只需要兩個引數,所以這樣做是driver.find_elements(by=By.TAG_NAME, value='a', Value='b')行不通的。
但是,為了解決您在此處報告的問題,我認為TAG_NAME不能用作定位器策略
因此,使用CSS你可以這樣做:
driver.find_elements(By.CSS_SELECTOR, "tag_name[attributeA = 'valueA'][attributeB = 'valueB']")
使用 XPath:
driver.find_elements(By.XPATH, "//tag_name[@attributeA = 'valueA' and @attributeB = 'valueB']")
uj5u.com熱心網友回復:
要回答您的問題,假設您想HTML使用 find 元素檢查多個標簽。你能做的最好的方法是CSS_SELECTOR或XPATH。
通過使用 CSS 選擇器,假設您要檢查div或span或input標記
你的代碼應該像
driver.find_elements(By.CSS_SELECTOR,"div, span, input")
通過 XPATH
driver.find_elements(By.XPATH,"//*[self::div|self::span|self::input]")
希望這個例子會有所幫助。
uj5u.com熱心網友回復:
正如其他回答者所指出的那樣,By.TAG_NAME只接受一種說法。在這種情況下,要選擇具有多個By.TAG_NAMEeg <a>、<b>、<c>等的元素,您可以使用以下任一定位器策略:
使用CSS_SELECTOR:
elements = driver.find_elements(By.CSS_SELECTOR, "a, b, c")通過運算式使用TAG_NAME :
lambdaelements = driver.find_elements(lambda driver: driver.find_element(By.TAG_NAME, "a") or driver.find_element(By.TAG_NAME, "b") or driver.find_element(By.TAG_NAME, "c"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/451810.html
標籤:Python python-3.x 硒 硒网络驱动程序
