【问题标题】:Cannot click button using Selenium - Python无法使用 Selenium 单击按钮 - Python
【发布时间】:2021-04-27 23:06:10
【问题描述】:

我在单击 Selenium 按钮时遇到问题。我以前从未使用过 Selenium,所以我尝试在网上搜索解决方案,但没有运气。我尝试了其他一些东西,例如 WebDriverWait,但没有任何效果。

# My Code
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

PATH = "F:\SeleniumProjects\chromedriver.exe"


options = webdriver.ChromeOptions()
options.add_argument("start-maximized");
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(options=options, executable_path=PATH)
driver.get("https://www.discord.com")

time.sleep(3)
buddy = driver.find_element_by_xpath("/html/body/div/div/div/div[1]/div[1]/header[1]/nav/div/a")
ActionChains(driver).move_to_element(buddy).click().perform()

这个异常让我感到困惑,因为我知道我可以与之交互,但我不确定为什么它说它不是。我确信有一些简单的解决方法,但我很难过。

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable: https://discord.com/login has no size and location
  (Session info: chrome=90.0.4430.93)

这是我要按下的按钮

<a class="button-195cDm buttonWhite-18r1SC buttonSmall-2bnF7I gtm-click-class-login-button button-1x6X9g mobileAppButton-2dMGaq" href="//discord.com/login">Login</a>

【问题讨论】:

  • 我想知道您的 URL 窗口是否没有显示,因为它显示 element not interactable: https://discord.com/login has no size and location,您可以尝试在 driver.get 之后使用 driver.set_window_size(1920, 1080) 之类的东西指定窗口的尺寸吗? /跨度>

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


【解决方案1】:

等待它,以下应该可以工作:

buddy = WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='appButton-2wSXh-']//a[contains(text(),'Login')]")))
buddy.click()

页面上有2个元素:

//a[contains(text(),'Login')]

这就是为什么我们需要再上一层到 XPath 中的 div 元素

在脚本顶部导入以下内容(如果它们还没有的话):

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

ActionChains 不是必需的,它通常用于下拉菜单等。此外,您的 XPath 是 HTML 中的完整路径,这通常是不可取的并且可能很脆弱。

【讨论】:

  • 谢谢,我也不知道如何在这种情况下找到正确的 XPath,是否有一些教程或一些我可以阅读的东西,以便更好地理解查找这些元素正确吗?
  • 这就是我学到的方法。在 Chrome 中访问您想要的任何网站。点击F12,应该会打开 Chrome 开发工具。单击码头底部。在 HTML 中单击 ctrl-F。这将打开一个查找窗口。现在您可以练习搜索 CSS 选择器或 Xpath。一旦您习惯了 HTML 层次结构,您就会发现构建自己的 XPath 很容易。如果您在此处将其与此站点相结合:automatetheplanet.com/…,您将在生成自己的 XPath 方面有一个良好的开端。我花了一点时间来掌握它,但它的方式更好
  • 您单击开发工具左上角的箭头来缩小按钮/您想要为其构建 XPath 的任何内容。在“查找”窗口中,您将立即知道您正在构建的 XPath 是否有效,它会告诉您是否找到匹配项(或超过 1 个)。它比右键单击并复制 Xpath 要好得多,原因是复制整个 XPath 并使其变脆并且可能更容易损坏。祝你好运!
猜你喜欢
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多