2 回答

TA貢獻1887條經(jīng)驗 獲得超5個贊
像 selenium 這樣的瀏覽器運行程序可能會很困難,因為運行程序可能會在首先加載頁面的所有元素之前執(zhí)行腳本。我會嘗試首先添加等待元素。正如 python-selenium 文檔提供的那樣:https://selenium-python.readthedocs.io/waits.html#explicit-waits
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
driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.TAG_NAME, "iframe"))
)
finally:
driver.quit()
如果您的元素正在瀏覽器上下文中加載,這應(yīng)該會獲取您的元素。

TA貢獻1772條經(jīng)驗 獲得超5個贊
要打印src屬性的值,<iframe>
您需要引發(fā)WebDriverWait?,并且visibility_of_element_located()
可以使用以下任一定位器策略:
使用XPATH:
print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "http://div[@class='bg_tv col-md-12 online']/iframe[@src]"))).get_attribute("src"))
使用CSS_SELECTOR:
print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.bg_tv.col-md-12.online > iframe[src]"))).get_attribute("src"))
注意:您必須添加以下導(dǎo)入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
添加回答
舉報