Python Selenium 无法定位元素

Posted

技术标签:

【中文标题】Python Selenium 无法定位元素【英文标题】:Python Selenium Unable to locate element 【发布时间】:2017-11-27 18:54:13 【问题描述】:

我正在尝试制作一个 Python 程序来自动登录我学校的网站。但是,我返回一个错误:

selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:"method":"xpath","selector":"//*[@id="loginidtext"]"

抛出错误的相关代码部分是:

BCnumber = driver.find_element_by_xpath('//*[@id="loginidtext"]')
BCnumber.send_keys('loginid')

该网站是: https://matrix.tjc.edu.sg/?topleft=toprow.php&bottomright=bottomrow.php

我尝试过使用:

driver.switch_to 

切换到相关的div却返回同样的错误...

【问题讨论】:

第二个框架内的 loginidtext 字段。所以,我们需要切换到索引为 1 和更高的 sendkeys 的帧 【参考方案1】:

这是您问题的答案:

由于定位器//*[@id="loginidtext"]topwindow iframe内,所以我们必须先切换到iframe,如下:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe")
driver.get('https://matrix.tjc.edu.sg/?topleft=toprow.php&bottomright=bottomrow.php')
driver.maximize_window()
driver.implicitly_wait(20)
driver.switch_to.frame("topwindow")
BCnumber = driver.find_element_by_xpath('//*[@id="loginidtext"]')
BCnumber.send_keys('loginid')

如果这能回答您的问题,请告诉我。

【讨论】:

您是否执行了代码并检查它是否正常工作?因为它不适合我。 @RAJ 你发现错误了吗?你在哪里看到错误?谢谢 元素不存在抛出错误!您是否执行了程序并检查了它?它为你传递了吗?

以上是关于Python Selenium 无法定位元素的主要内容,如果未能解决你的问题,请参考以下文章

无法在 python selenium 中使用 selenium chrome webdriver 定位元素

Python+Selenium元素定位不到的问题及解决办法

selenium+Python元素定位

selenium2+python自动化2-元素定位

无法使用 selenium 在 Web 地图应用程序中定位元素

Selenium2+python自动化6-八种元素元素定位(Firebug和firepath)