Python Selinum驱动程序等待SVG完全还原
我正在使用Selenium和Chrome驱动程序来删除包含SVG的页面。 我需要一种方法使Selenium等待svg完全加载,否则我将在报废时得到一些不完整的图表 目前,脚本需要等待10秒才能开始删除,但这对于删除20000页来说太多了Python Selinum驱动程序等待SVG完全还原,python,svg,web-scraping,selenium-chromedriver,Python,Svg,Web Scraping,Selenium Chromedriver,我正在使用Selenium和Chrome驱动程序来删除包含SVG的页面。 我需要一种方法使Selenium等待svg完全加载,否则我将在报废时得到一些不完整的图表 目前,脚本需要等待10秒才能开始删除,但这对于删除20000页来说太多了 def page_loaded(driver): path = "//*[local-name() = 'svg']" time.sleep(10) return driver.find_element_by_x
def page_loaded(driver):
path = "//*[local-name() = 'svg']"
time.sleep(10)
return driver.find_element_by_xpath(path)
wait = WebDriverWait(self.driver, 10)
wait.until(page_loaded)
在开始报废之前,是否有有效的方法检查SVG是否已加载 Selenium文档中的一个示例:
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, 'someid')))
因此,在您的情况下,应该是:
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(self.driver, 10)
element = wait.until(EC.presence_of_element_located((By.XPATH, path)))
此处WebDriverWait(driver,10)
中的10
是等待的最长秒数。它要等到10点或以先到者为准
自动化web浏览器时经常使用的一些常见条件:
- title_是title_包含的内容
- 元素的存在位置
- 元素的可见性\u位于元素的可见性\u
- 存在所有元素
- 文本在元素中显示
- 文本在元素值中显示 等
def find_svg(driver):
element = driver.find_element_by_xpath(path)
if element:
return element
else:
return False
然后调用Webdriver,然后按如下方式等待:
element = WebDriverWait(driver, max_secs).until(find_svg)
我相信您正在selenium.webdriver.support.ui import WebDriverWait中寻找
,我已经在使用上述函数作为停止等待的条件。代码更新我的代码与您编写的完全相同。它会等待svg出现,但问题是我想等待浏览器呈现它。您编写的代码并没有做到这一点,它只是检查元素是否存在,而不是它是否完全呈现。当我说10秒时,我指的是时间。睡眠(10)
你的确切用例是什么?也许你应该添加更多的信息,比如html_源代码。这是一个建议。如果svg元素具有一定的高度和宽度,您可以检查它吗?还是按大小?这是个有趣的问题。这里有一个链接可能对您有所帮助。问题在于svg内容,而不是svg标签本身。如果您不等待it内容呈现(每页呈现不同的内容),那么在进行废弃时,您将无法获得正确的内容。您正在尝试下载svg内容吗?如果是这样,则清除src
属性并从该链接下载。