Python Selenium execute_script Ajax请求未返回响应

时间:2019-10-12 23:47:51

标签: javascript python ajax selenium

我想在网站上执行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。

2 个答案:

答案 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 函数,并且响应通过了。