猿问

Python selenium execute_script ajax请求不返回响应

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

有没有办法让它在继续打印 r 之前等待 ajax 响应。


侃侃尔雅
浏览 287回答 2
2回答

慕码人2483693

我使用了execute_async_script函数而不是execute_script函数,并且响应通过了。

猛跑小猪

您是否尝试过研究如何使用WebDriverWait?from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom 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(感谢之前在我的帖子上发帖的人,帮助我找到了类似于你的解决方案)
随时随地看视频慕课网APP

相关分类

Python
我要回答