我想在网站上执行ajax请求,但是当我运行代码时,它会打印出“无”而不是结果。
from selenium import webdriver
url = "http://google.com"
d = webdriver.Chrome()
d.get(url)
r = d.execute_script("""
$.ajax({
url: 'http://google.com',
type: 'POST',
credentials: 'include',
mode: 'cors',
headers: {
//header
},
success: function(result) {
return result;
},
error: function(jqXHR, exception) {
return jqXHR.status;
}
});
""")
print(r)
有没有办法使它等待ajax响应,然后继续并打印出r。
答案 0 :(得分:0)
您是否尝试过研究如何使用WebDriverWait
?
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
如果您可以在Ajax响应时标识一个元素,则可以执行以下命令:
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
来源:https://selenium-python.readthedocs.io/waits.html
(感谢之前在我的主题中发布的那个人,它帮助我找到了与您相似的解决方案)
答案 1 :(得分:0)
我使用了 execute_async_script
函数而不是 execute_script
函数,并且响应通过了。