无法使用 Selenium 提交 drupal 菜单添加表单

Unable to submit drupal menu add form using Selenium

我正在尝试使用 python selenium chrome 网络驱动程序在 drupal (8 URL: <site url>/admin/structure/menu/add) 中创建一个新菜单。但是每次我尝试提交表单时,都没有任何反应。

我已经尝试了所有我能想到的表单提交方式:

我尝试定位提交按钮的 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)

我希望其中任何一个都应该提交表单并添加菜单,但页面似乎完全忽略了它。如果该信息有用,它还会在单击按钮时跳到页面顶部。

尝试这样的事情并检查你有多少元素:

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

如果它上升可能是为了不同的元素。如果大于 1,则只需要找到正确的 X:

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

所以经过多年的挖掘,结果证明要在 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()