我知道我可以使用如下方法:
find_elements_by_tag_name()
find_elements_by_id()
find_elements_by_css_selector()
find_elements_by_xpath()
Run Code Online (Sandbox Code Playgroud)
但我想要做的只是获取页面中存在的所有元素ID的列表,可能还有它们出现的标记类型.
我怎么能做到这一点?
rus*_*spy 20
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://google.com')
ids = driver.find_elements_by_xpath('//*[@id]')
for ii in ids:
#print ii.tag_name
print ii.get_attribute('id') # id name as string
Run Code Online (Sandbox Code Playgroud)
Arr*_*ran 18
以前不必这样做,但从逻辑上思考你可以使用XPath来做到这一点(可能是其他方式,XPath是我头脑中出现的第一件事).
使用find_elements_by_xpathXPath //*[@id](任何具有某种ID的元素).
然后,您可以遍历集合,并使用.tag_name每个元素的属性来查找它是什么类型的元素以及get_attribute("id")获取该元素ID 的方法/函数.
注意:这可能会很慢.毕竟,你要求提供大量信息.
小智 5
更新 Russian_spy 为新版本的 selenium 提供的优秀答案:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('http://www.google.com/')
ids = driver.find_elements(By.XPATH, '//*[@id]')
# to get names use '//*[@name]'
for ii in ids:
print('Tag: ' + ii.tag_name)
print('ID: ' + ii.get_attribute('id')) # element id as string
print('Name: ' + ii.get_attribute('name')) # element name as string
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45646 次 |
| 最近记录: |