Gewusst wie: behandeln von Warnungen mit Python?
Ich wuold wie zu handhaben Meldungen mit Python. Was ich wuold wie zu tun ist:
- Eine url öffnen
- "Formular senden", oder klicken Sie auf einige links
- Überprüfen wenn eine Warnung erscheint in der neuen Seite
Machte ich dies mit Javascript
mit PhantomJS
, aber ich würde auch mit Python.
Hier ist der javascript-code:
Datei test.js:
var webPage = require('webpage');
var page = webPage.create();
var url = 'http://localhost:8001/index.html'
page.onConsoleMessage = function (msg) {
console.log(msg);
}
page.open(url, function (status) {
page.evaluate(function () {
document.getElementById('myButton').click()
});
page.onConsoleMessage = function (msg) {
console.log(msg);
}
page.onAlert = function (msg) {
console.log('ALERT: ' + msg);
};
setTimeout(function () {
page.evaluate(function () {
console.log(document.documentElement.innerHTML)
});
phantom.exit();
}, 1000);
});
Datei index.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<form>
<input id="username" name="username" />
<button id="myButton" type="button" value="Page2">Go to Page2</button>
</form>
</body>
</html>
<script>
document.getElementById("myButton").onclick = function () {
location.href = "page2.html";
};
</script>
Datei page2.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
</head>
<body onload="alert('hello')">
</body>
</html>
Dieser Werke; das erkennt die Warnung page2.html.
Jetzt habe ich dieses python-script:
test.py
import requests
from test import BasicTest
from selenium import webdriver
from bs4 import BeautifulSoup
url = 'http://localhost:8001/index.html'
def main():
#browser = webdriver.Firefox()
browser = webdriver.PhantomJS()
browser.get(url)
html_source = browser.page_source
#browser.quit()
soup = BeautifulSoup(html_source, "html.parser")
soup.prettify()
request = requests.get('http://localhost:8001/page2.html')
print request.text
#Handle Alert
if __name__ == "__main__":
main();
Nun, wie kann ich überprüfen, ob ein Alarm auftreten page2.html mit Python? Zuerst öffne ich die Seite index.html dann page2.html.
Ich bin am Anfang, so dass jeder die Anregungen zu schätzen wissen.
p.s.
Habe ich auch getestet webdriver.Firefox (), aber es ist extrem langsam.
Auch ich Las diese Frage : Prüfen Sie, ob eine Warnung vorhanden ist, mit Selen mit python
aber es funktioniert nicht (unten ist die gleiche Vorherige Skript plus die Lösung in der Antwort).
.....
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
....
def main():
.....
#Handle Alert
try:
WebDriverWait(browser, 3).until(EC.alert_is_present(),
'Timed out waiting for PA creation ' +
'confirmation popup to appear.')
alert = browser.switch_to.alert()
alert.accept()
print "alert accepted"
except TimeoutException:
print "no alert"
if __name__ == "__main__":
main();
Bekomme ich die Fehlermeldung :
"Selen.common.Ausnahmen.WebDriverException: Meldung: Ungültige
Befehl-Methode.."
Du musst angemeldet sein, um einen Kommentar abzugeben.
PhantomJS verwendet GhostDriver zur Implementierung der WebDriver-Wire-Protokoll, das ist, wie es funktioniert, wie ein headless browser innerhalb von Selen.
Leider GhostDriver unterstützt derzeit keine Benachrichtigungen. Obwohl es sieht aus wie Sie Hilfe möchten, die zum implementieren der Funktionen:
https://github.com/detro/ghostdriver/issues/20
Könnten Sie eventuell wechseln, um die javascript-version von PhantomJS oder verwenden Sie den Firefox-Treiber innerhalb von Selen.