Элемент кнопки не взаимодействует - PullRequest
0 голосов
/ 19 марта 2020

Я создал сценарий автоматической проверки в Python 3.8 для следующего веб-сайта https://fasttimes.com.au/ (сайт создан с использованием Magento), и все кнопки, выпадающие списки, входы и т. Д. c работали до этого момента. Однако на этапе выбора доставки кнопка, отвечающая за сохранение сведений о доставке и разрешение перейти к этапу выставления счета, согласно консоли python, гласит: «Сообщение: элемент не взаимодействует».

Я пытался использовать execute_script для непосредственного взаимодействия с сайтом, это не приводит к ошибке и говорит, что она завершена, но в WebDriver кнопка фактически не была щелкнул и поэтому процедура перехода к следующему этапу оформления заказа не состоялась. Что касается «цепочек действий». они просто выдают ошибку, указанную выше, так же, как и поиск по XPATH или CSS_Selector. Я пытался использовать импорт «Ключи» и пытался нажать кнопку «ENTER», а также использовать замену WebDriver .send_keys(u'\ue007') безрезультатно. До того, как это упомянуто ниже, я также пытался использовать ожидания, однако, возможно, я делаю их неправильно?

Например:

element = WebDriverWait(driver, 15).until(
ec.presence_of_element_located((By.ID, "login:guest")))

Исправьте меня, если строка выше неверного форматирования

Сайт HTML выглядит следующим образом:

<div class="buttons-set" id="shipping-method-buttons-container">
    <p class="back-link"><a href="#" onclick="checkout.back(); return false;"><small>« </small>Back</a></p>
    <button type="button" class="button" onclick="shippingMethod.save()"><span><span>Continue</span></span></button>
    <span id="shipping-method-please-wait" class="please-wait" style="display:none;">
        <img src="https://static.fasttimes.com.au/skin/frontend/ultimo/default/images/opc-ajax-loader.gif" alt="Loading next step..." title="Loading next step..." class="v-middle"> Loading next step...        </span>
</div> 

Мой текущий код:

driver.find_element_by_xpath("//*[@id='shipping-method-buttons-container']/button").send_keys(u'\ue007')

Любые предложения будут с благодарностью. Я считаю, что кнопка, с которой я пытаюсь взаимодействовать, это

<button type="button" class="button" onclick="shippingMethod.save()"><span><span>Continue</span></span></button>

... но я не слишком уверен. Я чувствую, что на данный момент я исчерпал все возможные пути, но я отказываюсь верить, что эта проклятая кнопка не поддается решению! Спасибо :) 1026 *

1 Ответ

0 голосов
/ 19 марта 2020

Как вы уже сказали, вы хотите перейти к этапу Биллинг , я понимаю, что вы находитесь на шаге 1 процесса оформления заказа. Я говорю это потому, что вы идентифицировали с xpath //*[@id='shipping-method-buttons-container']/button кнопку на шаге 4 Способ доставки , которая на самом деле еще не решаема.

Сначала вам нужно выбрать метод оформления заказа и продолжить. Попробуйте:

driver.find_element_by_id('login:guest').click()  # select the "Checkout as Guest" radio button
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='onepage-guest-register-button']")))
driver.find_element_by_xpath("//*[@id='onepage-guest-register-button']").click()  # click Continue

В качестве альтернативы, если это шаг 4, вы действительно застряли на:

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='shipping-method-buttons-container']/button")))
driver.find_element_by_xpath("//*[@id='shipping-method-buttons-container']/button").click()
...