可以进行 XHR 调用并使用 Selenium 呈现输出吗?
It's possible to do an XHR call and render the output with Selenium?
嗯,标题说明了一切...可以从 Selenium/Webdriver 执行 XmlHttpRequest,然后在浏览器实例中呈现该请求的输出吗?如果是这样,你能启发我吗?
一种选择是使用 requests
, save the response to a file and get()
it with selenium webdriver instance (How to use selenium webdriver on local (on my pc) webpage instead of locate somwhere on www?).
发出 XHR 请求
Selenium 真正被设计为网络浏览器的外部控制系统。我不认为它是测试数据本身的来源。还有其他为此目的而设计的单元测试框架,但我发现 Selenium 的 预期目的有所不同。
我想你想要这样的东西:
fileupload_url = 'https://this-site.com/upload'
filedata = open('example.txt').read()
ajax_request = '''
var xhr = new XMLHttpRequest();
xhr.setRequestHeader('Content-type', 'application/octet-stream'); // text/plain
xhr.onload = function(){{ document.body.innerHTML += '<div>Passed!</div>';
alert (xhr.responseText); }} // success case
xhr.onerror = function(){{ document.body.innerHTML += '<div>Failed!</div>';
alert (xhr.responseText); }} // failure case
xhr.open ('POST', {}, true);
xhr.send ({});
'''.format(fileupload_url, filedata)
driver.execute_script(ajax_request)
嗯,标题说明了一切...可以从 Selenium/Webdriver 执行 XmlHttpRequest,然后在浏览器实例中呈现该请求的输出吗?如果是这样,你能启发我吗?
一种选择是使用 requests
, save the response to a file and get()
it with selenium webdriver instance (How to use selenium webdriver on local (on my pc) webpage instead of locate somwhere on www?).
Selenium 真正被设计为网络浏览器的外部控制系统。我不认为它是测试数据本身的来源。还有其他为此目的而设计的单元测试框架,但我发现 Selenium 的 预期目的有所不同。
我想你想要这样的东西:
fileupload_url = 'https://this-site.com/upload'
filedata = open('example.txt').read()
ajax_request = '''
var xhr = new XMLHttpRequest();
xhr.setRequestHeader('Content-type', 'application/octet-stream'); // text/plain
xhr.onload = function(){{ document.body.innerHTML += '<div>Passed!</div>';
alert (xhr.responseText); }} // success case
xhr.onerror = function(){{ document.body.innerHTML += '<div>Failed!</div>';
alert (xhr.responseText); }} // failure case
xhr.open ('POST', {}, true);
xhr.send ({});
'''.format(fileupload_url, filedata)
driver.execute_script(ajax_request)