【问题标题】:No interactive elements in screenshot截图中没有交互元素
【发布时间】:2017-07-05 04:48:58
【问题描述】:

我正在用这段代码截屏:

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,一切都一样,但是,在其他网站上一切都很好。

【问题讨论】:

    标签: python selenium selenium-webdriver phantomjs screenshot


    【解决方案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)")))
    

    发布您将看到正确的屏幕截图

    【讨论】:

    • 错误,我尝试了更多时间,仍然无法正常工作。 Traceback (most recent call last): File "C:\...\", line 13, in <module> WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#workspace > g:nth-child(3) > rect:nth-child(2)"))) File "C:\Program Files\Python36\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: Screenshot: available via screen
    • 你能用 Chromedriver 试试代码,看看它是否有效,同时我正在寻找 PhantomJS 问题
    • 好的,我试过 Chromedriver,现在它可以工作了,出于某种原因,我猜 PhantomJS 不能在那个网站上正常工作。
    • 我在使用 PhantomJS 时也看到错误,我会在找到任何解决方案时更新您
    【解决方案2】:

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

    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')
    

    【讨论】:

      猜你喜欢
      • 2019-07-10
      • 2018-04-13
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2017-07-02
      • 1970-01-01
      相关资源
      最近更新 更多