Невозможно отправить форму добавления в меню drupal с помощью Selenium - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь создать новое меню в drupal (8 URL: <site url>/admin/structure/menu/add) с помощью веб-драйвера python selenium chrome. Но каждый раз, когда я пытаюсь отправить форму, ничего не происходит.

Я перепробовал все формы представления форм, которые мог придумать:

Я попытался настроить таргетинг на div кнопки подтверждения и навести курсор мыши на нажатие

.
save_button = browser.find_element_by_xpath("//*[@id='edit-actions']")
Hover = ActionChains(browser).move_to_element(pages_menu)
Hover.click().perform() 

Я пытался просто нажать на вход

save_button = browser.find_element_by_xpath("//*[@id='edit-submit']")
save_button.click()

Я пытался использовать функцию .submit () для каждого поля

menu_title_input = browser.find_element_by_xpath("//*[@id='edit-label']")
administrative_summary_input = browser.find_element_by_xpath("//*[@id='edit-description']")

menu_title_input.submit()
administrative_summary_input.submit()

Я даже пытался отправить ключи на вход

save_button = browser.find_element_by_xpath("//*[@id='edit-submit']")
save_button.send_keys(Keys.ENTER)

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

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Таким образом, после нескольких веков копания оказывается, что для генерации имени машины в drupal javascript требует, чтобы вы имитировали щелчок и вводили символы таким образом, чтобы он мог генерировать имя машины при вводе. Вот код, который я получил для работы:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

menu_title_input = browser.find_element_by_xpath("//*[@id='edit-label']")
ActionChains(browser).move_to_element(menu_title_input).click(menu_title_input).send_keys(Keys.END + Keys.SPACE + Keys.BACKSPACE + Keys.ENTER).perform()
0 голосов
/ 08 июля 2019

попробуйте что-то вроде этого и проверьте, сколько элементов у вас было:

len(browser.find_elements_by_xpath("//*[@id='edit-submit']"))

если оно поднимется, может быть, это будет для другого элемента. Если будет больше 1, вам просто нужно найти правильное X:

browser.find_elements_by_xpath("//*[@id='edit-submit']")[X].your_operations
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...