簡體   English   中英

有沒有辦法使用 selenium webdriver (python) 捕獲樣式數據?

[英]Is there a way to capture style data using selenium webdriver (python)?

我目前正在尋找公司在風格化我上使用的特定排版(例如對於http://stylifyme.com/?stylify=uber.com我想拉“UberMove,'Open Sans','Helvetica Neue', Helvetica、無襯線、普通、52px、56px、#000000")。 但是,我在最終提取文本時遇到了問題 - 文本顯示在 html 中,但在我嘗試提取文本時沒有出現。 我試過同時提取內部 HTML 和文本 - 請參閱下面的示例代碼和文本。

page=webdriver.Chrome('/Downloads/chromedriver.exe')
page.get('http://stylifyme.com/')
website_finder=page.find_element_by_id('input-stylify')
website_finder.send_keys('www.bcg.com')
website_finder.submit()

#try 1:
print(page.find_element_by_id("result-header-1-dt").text)
#output 1: "Header 1: Font, Style, Size, Leading, Colour"

#try 2
print(page.find_element_by_xpath('/html/body/div[1]/table/tbody/tr[1]/th/strong').get_attribute("innerHTML"))
#output 2: "Header 1:"


HTML代碼:

<th id="result-header-1-dt" class="first" scope="row"><strong style="opacity: 1;">
UberMove, 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif, normal, 52px, 56px, #000000
</strong> <span style="opacity: 1;">Font, Style, Size, Leading, Colour</span></th>

任何幫助將不勝感激!

正如 pguardiario 所提到的,解決方案是等待元素被加載。 使用time.sleep(5)大部分時間都可以正常工作,但經常使用WebDriverWait可以更好地工作。 time.sleep休眠一段時間,這可能會導致運行腳本時出現不必要的暫停,或者如果頁面加載時間過長,則會導致失敗。 WebDriverWait通過在找到元素后完成來幫助保持腳本運行。 如果從未找到該元素,則將拋出異常。

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait

driver = ...
max_wait_time = 5
selector = ...
by = By.XPATH  # Or By.ID, By.CSS_SELECTOR, etc.

try:
    WebDriverWait(driver, max_wait_time).until(ec.presence_of_element_located((by, selector)))
except TimeoutException:
    print("Failed to find an element with", selector, "in", max_wait_time, "seconds)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM