繁体   English   中英

无法使用 Python 的 Selenium 点击输入元素 HTML

[英]Can't click on an input element HTML using Selenium for Python

我在 Python 上使用 Selenium 时遇到问题。 这是整个错误代码:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/div[3]/div[2]/form[1]/input"}
  (Session info: MicrosoftEdge=89.0.774.57)

这是我要访问的元素:

在此处输入图像描述

事实是,当我单击该元素并复制完整的 XPath 时,这就是我所拥有的:

/html/body/div/div[3]/div[2]/form[1]/input

但由于某些原因它不起作用......我几乎尝试了所有方法:使用名称,使用值,使用正常的 XPath(即//*[@id="content"]/form[1]/input顺便一提)

我正在使用 Edge Chromium,我使用 Python 3.9.0,这是我正在使用的代码(在变量telechargerReleve之前一切正常:

from selenium import webdriver

driver = webdriver.Edge(executable_path="automation_drivers/msedgedriver.exe")
driver.get("https://login.unice.fr/login?service=https://ent.unice.fr/uPortal/Login")

usernameElement = driver.find_element_by_id("username")
passwordElement = driver.find_element_by_id("password")

usernameElement.send_keys("myUsername")
passwordElement.send_keys("myPassword")

login = driver.find_element_by_name("submit")
login.click()

mesInfos = driver.find_element_by_xpath("/html/body/table[2]/tbody/tr/td[3]/table/tbody/tr[2]/td[3]/a")
mesInfos.click()

intracursus = driver.find_element_by_xpath("/html/body/table[3]/tbody/tr/td[2]/span[2]/a[3]")
intracursus.click()

telechargerReleve = driver.find_element_by_xpath("/html/body/div/div[3]/div[2]/form[1]/input")
telechargerReleve.click()

提前谢谢你,鲁。

PS:有些文字可能是法语,所以如果您需要翻译或其他内容,请随时问我!

好的,所以我弄清楚了问题所在。 该网站在 HTML 中使用了iframe标签作为按钮,这显然是我无法单击它的主要原因。 我在我的代码中编辑的是我替换为的最后两行:

seq = driver.find_elements_by_tag_name('iframe')

for index in range(len(seq)):   
    driver.switch_to_default_content()
    iframe = driver.find_elements_by_tag_name('iframe')[index]
    driver.switch_to.frame(iframe)
    try:
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME,"telrelevepresences"))).click()
    except TimeoutException:
        pass

谢谢大家的回答!

在您单击 a 标签后引发等待。

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME,"telrelevepresences"))).click()

进口

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM