如何使用 Selenium 在 Wordpress 管理面板中单击菜单元素

How to click menu element in Wordpress admin panel using Selenium

提问人:Justin 提问时间:11/5/2023 最后编辑:YaroslavmJustin 更新时间:11/5/2023 访问量:36

问:

我在做什么:

我的同事给我发了视频,我必须为每个非主页导入 8 个块。早些时候我正在研究硒,我想我可以自动化吗?

我尝试过用于登录 wordpress 的代码。然后我想通过导入博客来自动编辑 elementor 上的页面。

现在我坚持点击只有类标识符的 wordpress 菜单。

enter image description hereenter image description here

import time
from selenium import webdriver
from selenium.webdriver.safari.service import Service
#from selenium.webdriver.safari.options import SafariOptions
#from webdriver_manager.safari import SafariDriverManager

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC


#options = SafariOptions()
#options.add_experimental

browser = webdriver.Safari()

browser.get('http://akaska.hledampneu.cz/wp-admin')

time.sleep(1)
Passname = browser.find_element(By.ID,"user_login")
#Passname = browser.find_element(by=id("user_login"))
Passname.send_keys('admin.akaska')

Password = browser.find_element(By.ID, "user_pass")
Password.send_keys('tdYFxncD9gbd6Q)Y*2')

time.sleep(1)
submit = browser.find_element(By.ID,"wp-submit").click()

#submit = browser.find_element(By.CLASS_NAME,"icon-options")

time.sleep(1)

#submit = browser.find_element(By.ID,"wp-admin-bar-site-name")

submit = browser.find_element(By.CSS_SELECTOR, 'span[class="ab-item"]').click()

我试过什么:

1.) CSS_SELECTOR

submit = browser.find_element(By.CSS_SELECTOR, 'span[class="ab-item"]').click()

这是它提出的错误。当我尝试仅使用类单击时

Traceback (most recent call last):
  File "/Users/justin/Desktop/projects/wordpressAutomation /main.py", line 36, in <module>
    submit = browser.find_element(By.CSS_SELECTOR, 'span[class="ab-item"]').click()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 741, in find_element
    return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 347, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: ; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception

2.) CLASS_NAME

submit = browser.find_element(By.CLASS_NAME,"ab-item").click()
Traceback (most recent call last):
  File "/Users/justin/Desktop/projects/wordpressAutomation /main.py", line 34, in <module>
    submit = browser.find_element(By.CLASS_NAME,"ab-item").click()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 741, in find_element
    return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 347, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: ; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
python wordpress 自动化 selenium-webdriver-python

评论


答:

0赞 Yaroslavm 11/5/2023 #1

管理面板包含用于小型浏览器分辨率和最大化窗口的元素。

首先,没有带有 class 的元素,但是有带有当前 class 的元素。span[class="ab-item"]a

要点击你的元素,你需要按可见性过滤你的元素,因为第一个元素是在移动视图中可见的元素,如果你尝试点击它,它将不可见,所以不可交互。

elements = WebDriverWait(browser, 20).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'a[class="ab-item"]')))
[element for element in elements if element.is_displayed()][0].click()