Python selenium execute_script ajax-запрос не возвращает ответ - PullRequest
0 голосов
/ 13 октября 2019

Я хочу выполнить ajax-запрос на сайт, но когда я запускаю код, он выводит «None», а не результат.

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 голосов
/ 13 октября 2019

I Использовал функцию execute_async_script вместо функции execute_script, и ответ пришел.

0 голосов
/ 13 октября 2019

Вы пытались исследовать, как использовать 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

(Спасибо парню, который ранее писал в моей теме, который помог мне найти решение, подобное вашему)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...