小编Joh*_*ols的帖子

Selenium:滚动到页面末尾,动态加载网页

我有一个网页,在向下滚动页面时不断加载新项目,直到每个项目都加载完毕.

我正在使用Java中的Selenium,需要向下滚动到页面底部才能加载所有内容.

我尝试了几种不同的选项,比如滚动到页面底部的元素:

WebElement copyrightAtEndOfPage = webDriver.findElement(By.xpath("//a[@href='/utils/copyright.html']"));
((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoView();", copyrightAtEndOfPage);
Run Code Online (Sandbox Code Playgroud)

这只会向下滚动一次,然后网页会继续加载.

我也尝试过这种方法,它也只向下滚动一次,因为它只考虑浏览器高度.

任何帮助都非常感谢.

javascript java selenium

8
推荐指数
2
解决办法
5436
查看次数

内容安全策略和带有外部 <use> 的 SVG

我已经使用以下定义设置了内容安全策略(CSP)style-src

style-src 'self' 'nonce-somenonce'
Run Code Online (Sandbox Code Playgroud)

然后,在我的标记中,我包含了 SVG,如下所示:

<svg role="img" title="Clock">
    <use xlink:href="/Content/Styles/svg/sprite.symbol.svg#icon-clock" xmlns:xlink="http://www.w3.org/1999/xlink"></use>
</svg>
Run Code Online (Sandbox Code Playgroud)

外部 SVG 包含多个带路径的符号:

<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <symbol viewBox="0 0 40 40" id="arrow-right" xmlns="http://www.w3.org/2000/svg">
        <path d="M29 20l-5-5v4H11v2h13v4l5-5z"/>
    </symbol>
    <symbol viewBox="0 0 22 22" id="icon-clock" xmlns="http://www.w3.org/2000/svg">
        <path fill="#c20418" class="atcls-1" d="M17.727 9.777h-5.5v-5.5a1.222 ..."/>
    </symbol>
</svg>
Run Code Online (Sandbox Code Playgroud)

Chrome 拒绝允许此代码,并且我不知道如何在没有'unsafe-inline'. 根据这两个测试,SVG 不是 nonceable 元素:

  1. CSP 测试:'nonce-value' - 元素是否为 nonceable?
  2. CSP 测试:如何使 CSP 合规

我查看了这个线程,它建议将 SVG 分组为 a<style>和 nonce,但我不知道如何执行此操作,以及它是否适用于外部定义。

还有这个线程建议使用 JS …

html javascript css svg content-security-policy

8
推荐指数
1
解决办法
2125
查看次数

FastAPI在通过其他Python应用程序调用时响应缓慢,但在cURL中响应速度很快

我有一个无法解决的问题。我有一个使用 FastAPI 构建的 API 服务,当我尝试从本地计算机上的另一个 Python 脚本调用任何端点时,响应需要 2 秒以上的时间。当我通过 cURL 或内置 Swagger 文档发送相同的请求时,响应几乎是即时的。

整个服务器脚本是这样的:

from fastapi import FastAPI
import uvicorn

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

if __name__ == '__main__':
    uvicorn.run(app, host='0.0.0.0', port=8000)
Run Code Online (Sandbox Code Playgroud)

然后我使用 HTTPX 从测试脚本中调用它。我也尝试了 requests 包,结果是一样的。

import httpx
r = httpx.get('http://localhost:8000/')
print(r.elapsed)
Run Code Online (Sandbox Code Playgroud)

这会打印如下内容:0:00:02.069705

然后我使用 cURL 做同样的事情:

curl -w "@curl-format.txt" -o /dev/null -X 'GET' 'http://localhost:8000/'
Run Code Online (Sandbox Code Playgroud)

这打印:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left …
Run Code Online (Sandbox Code Playgroud)

python windows python-requests asgi fastapi

6
推荐指数
1
解决办法
4167
查看次数