截图中没有互动元素

时间:2017-07-05 04:48:59

标签: python selenium selenium-webdriver phantomjs screenshot

我正在使用此代码进行屏幕截图:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = ('Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36')
driver = webdriver.PhantomJS(desired_capabilities=dcap,service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any','--web-security=false']) 
driver.set_window_size(1920, 1080)
driver.get("https://app.wisemapping.com/c/maps/579829/public")
driver.save_screenshot('screen.png')
driver.quit()

而我得到的只是这个: Screenshot

如果你去website我这样做,你可以看到有思维导图。 我不知道问题是什么,我试过chromedriver,一切都一样,但是,在其他网站上一切都很好。

2 个答案:

答案 0 :(得分:1)

您需要添加一个webdriver等待,以便元素出现在屏幕上而不是截屏

这些是您需要的导入

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

在拍摄截屏之前添加此行

WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#workspace > g:nth-child(3) > rect:nth-child(2)")))

发布您将看到正确的屏幕截图 enter image description here

答案 1 :(得分:1)

这是一个时间问题。屏幕截图是在元素加载并可见之前拍摄的。使用显式等待等待它们

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

driver.get("https://app.wisemapping.com/c/maps/579829/public")

WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "#workspaceContainer > svg > [preserveAspectRatio]")))

driver.save_screenshot('screen.png')