【问题标题】:How to click on a button without ID using Python Selenium?如何使用 Python Selenium 单击没有 ID 的按钮?
【发布时间】:2021-02-05 09:18:37
【问题描述】:

基本上,我正在编写一个脚本,它应该在 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屏幕hsot中没有按钮,将html添加为代码并添加您感兴趣的元素
  • 你可以使用父作为参考添加父html也

标签: python selenium google-chrome inspect-element


【解决方案1】:

试试 xpath

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

【讨论】:

    【解决方案2】:

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

    在您的情况下,链接中似乎有文字,所以这可能有效

    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)。如果没有,则通过链接文本查找(如果它是按钮或链接,通常可能)。如果它是一个表单元素,您可以按名称尝试。如果一切都失败了,你必须通过 xpath 或 css 选择器来做。 xpath 和 css 选择器在功能和复杂性方面相似。使用你更舒服的。

    标签名和类名很少有用,因为通常有多个不相关的元素具有相同的标签或相同的类。

    为了给您更详细的帮助,您需要发布更多的 html 源代码。就目前而言,这就是我能帮你的全部了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多