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

时间:2019-07-08 17:56:53

标签: python python-3.x selenium selenium-webdriver drupal

我正在尝试使用python selenium chrome webdriver在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)

我希望其中任何一个都可以提交表单并添加菜单,但是页面似乎完全忽略了它。如果该信息有用的话,它也会跳到页面顶部。

2 个答案:

答案 0 :(得分:0)

尝试类似的方法,并检查您拥有多少个元素:

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

如果上升,可能是因为其他因素。如果wolud大于1,则只需找到正确的X:

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

答案 1 :(得分:0)

因此,经过多年的挖掘,事实证明要在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()