如何使用 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']")
基本上,我正在编写一个脚本,它应该在 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']")