![](/img/trans.png)
[英]Python Selenium - how to click full screen button of a video without a frame
[英]Python: Login to webpage and click button without Selenium
我正在編寫一個 python 腳本來連接到一個網站,登錄然后在下一頁中的給定時間單擊一個按鈕。 我設法用 Selenium 做到了這一點,但我想要一個無需打開瀏覽器的解決方案。
我正在嘗試使用請求來做到這一點。 我可以登錄並導航到受保護的頁面,但我很難按下按鈕:
import requests
payload = {
'username': 'MyUsername',
'password': 'MyPassword'
}
with requests.Session() as s:
p = s.post("login_URL", data=payload)
print (p.text)
r = s.get("A_protected_URL")
print (r.text)
我想按下的按鈕在“A_protected_URL”中,它的定義如下:
<script type="text/javascript">
function SubmitForm(form) // Button clicked
{
form.Submit.disabled = true;
form.Submit.value = "Please wait...";
return true;
}
</script>
<div id="submit_button" >
<form action="https://mydummywebsite.com/submitted"
method="post" onsubmit="return SubmitForm(this);" >
<input type="submit" class="sub-process-button" name="Submit" value="Submit">
</form>
向執行 Javascript 的按鈕發送請求的正確方法是什么? 謝謝
不要試圖“點擊”任何東西,只是模仿按鈕的作用。 在這種情況下,按鈕提交一個表單。 這意味着它將向操作 URL ( action="https://mydummywebsite.com/submitted"
) 執行POST
請求 ( method="post"
action="https://mydummywebsite.com/submitted"
)。 表單中的所有字段都將作為請求的內容發送,但在這種情況下,表單中沒有其他字段。
import requests
payload = {
'username': 'MyUsername',
'password': 'MyPassword'
}
with requests.Session() as s:
p = s.post("login_URL", data=payload)
print (p.text)
r = s.post("https://mydummywebsite.com/submitted")
print (r.text)
除非有人完全用 Python 實現了一個完整的瀏覽器,否則你要問的是不可能的,我對此表示懷疑。 您需要像 Selenium 這樣的東西的原因是因為 Selenium 圍繞實際的 Web 瀏覽器(例如 Chromium)提供 Python 綁定。 因此,您用 Python 編寫的與 Selenium 交互的代碼正在被轉換為與瀏覽器(可能是 Chromium)本身的較低級別的 API 交互。
瀏覽器極其復雜,負責渲染 HTML、CSS、JavaScript 等。 一旦 Chromium 收到您提供的 HTML,它就必須加載自己的 JavaScript 引擎來解釋您的 JavaScript 並運行它。 requests
,Python 庫,對此一無所知。 它只是與原始 HTML 交互。
因此,如果您正在制作 HTML 並且需要模擬嵌入的 JavaScript 以查看它在瀏覽器中的行為,最現實的選擇是僅通過瀏覽器運行 HTML。 硒是一個不錯的選擇。 如果您實際上並不關心 JavaScript 本身,而只想確保您的 Python 服務器正在做正確的事情,您可以按照另一個答案的建議模擬 POST 請求。 讓我分解一下:
requests
庫模擬 GET/POST 等請求requests
模擬的 HTTP GET/POST/DELETE 等? 您可以只使用 Python requests
,但根據我的經驗,編寫 JavaScript 來與網頁交互沒有那么痛苦。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.