如何使用 Python Selenium 单击没有 ID 的按钮?

How to click on a button without ID using Python Selenium?

基本上,我正在编写一个脚本,它应该在 chrome 上打开一个特定的 URL,按某些按钮,登录,按另一个按钮,然后终止 chrome。

到目前为止,这很容易做到,因为我需要的每个按钮或字段都有自己的 ID。

现在,我必须按下一个没有 ID 的按钮,我不知道该怎么做。

这是我的代码。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pyautogui
import time
browser = webdriver.Chrome('XXX')
browser.get("XXX")

details_bttn = browser.find_element_by_id('details-button')
details_bttn.click()
proceed_bttn = browser.find_element_by_id('proceed-link')
proceed_bttn.click()
username = browser.find_element_by_id('login_name')
username.click()
username.send_keys('XXX')
password = browser.find_element_by_id('login_password')
password.click()
password.send_keys('XXX')
password.send_keys(Keys.ENTER)

我试过用Xpath做但是不行,因为按钮只亮了,但没有被点击。第一次接触python,经验不足

网站中的每个 html 元素都可以通过某种方式寻址。最简单的是元素是否有一个 id。你的元素没有。第二个最简单的可能是元素上是否有一些独特的文本。如果它是一个按钮或 link.

,这主要是这种情况

在你的例子中,link 似乎有文字,所以这可能有效

button = browser.find_element_by_link_text("System")

还有其他寻址元素的方法。这是完整列表

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

https://selenium-python.readthedocs.io/locating-elements.html

https://selenium-python.readthedocs.io/api.html#locate-elements-by

如果可能的话(如果它有一个 id),通常你想先通过 id 来查找。如果没有,则通过 link 文本查找(如果它是按钮或 link 通常可能)。如果它是一个表单元素,您可以按名称尝试。如果所有这些都失败了,你必须通过 xpath 或 css 选择器来完成。 xpath 和 css 选择器在功能和复杂性上相似。使用你更舒服的那个。

by tag name 和 by class name 很少有用,因为通常有多个不相关的元素具有相同的标签或相同的 class.

为了给你更详细的帮助你需要post更多的html源代码。现在我只能帮到你了。

尝试使用 xpath

browser.find_element_by_xpath("//div[text() = 'System']")