【问题标题】:Unable to submit drupal menu add form using Selenium无法使用 Selenium 提交 drupal 菜单添加表单
【发布时间】:2019-07-09 03:54:07
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    如果它上升,它可能会用于不同的元素。如果wolud大于1,你只需要找到正确的X:

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

    【讨论】:

    • 事实证明,drupal 显然需要您在框中伪造输入。只是填写表单域不这样做。否则不会生成菜单的机器名称。
    【解决方案2】:

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

    【讨论】:

    • 不到 2 小时是否可以算作“年龄”?
    • 处理 selenium/chromedriver 时,2 小时不算什么! .click() 应该在这里工作! :D
    • 我已经尝试了几个小时后发布了这个问题。不知道总共要多久...不想知道:(
    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    相关资源
    最近更新 更多