【问题标题】:Python 2.7 Selenium - How to get all elements on a webpage?Python 2.7 Selenium - 如何获取网页上的所有元素?
【发布时间】:2015-09-25 05:33:07
【问题描述】:
from selenium import webdriver

fp = webdriver.FirefoxProfile('')
driver = webdriver.Firefox(firefox_profile=fp)
driver.set_window_size(1400, 1000)
driver.get('')

def get_list_of_all_elements(self):
    list_of_elements = self.driver.find_elements_by_xpath('//*')

    for ele in list_of_elements:
        print ele

我希望我的代码打印出页面上的元素,该代码可以正常工作,只是它不打印任何内容并且知道原因。更具体地说,理想情况下,我不希望页面上的每个元素,只需要一组我使用driver.find_element_by_xpath("//img[@title='']") 定位的可能图像,标题因图像而异,并且它们没有类/类型/等,所以我要么有使用 xpath 或 css 选择器。任何帮助表示赞赏 =)。

【问题讨论】:

  • 为什么要这样做?如果你真的想要所有元素,为什么不在浏览器中打开页面源代码?您要解决的问题是什么?
  • 如果要查找页面源,也可以打印driver.page_source。

标签: python css selenium xpath element


【解决方案1】:

您可能需要通过引入显式等待来给它加载页面的时间。例如,您可以等待至少一个img 元素出现在页面上:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, "img"))
)

list_of_elements = self.driver.find_elements_by_css_selector('img[title]')
# ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2012-01-20
    • 2023-01-31
    • 1970-01-01
    • 2013-12-13
    • 2022-01-19
    相关资源
    最近更新 更多