【问题标题】:Unable to locate button via Selenium for Python无法通过 Selenium for Python 定位按钮
【发布时间】:2020-02-03 00:37:03
【问题描述】:

我想通过 Selenium WebDriver 在网站上找到登录按钮并单击它。 HTML 代码如下:

<a class="myLoginButton" href="#" 
onclick="fireLoginOrRegisterModalRequest('sign_in');ga('send', 'event', 
'service_navigation', 'login', '1st_level');">
Login
</a>

但是无论我使用哪种方法来定位这个按钮,我总是得到错误:

selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素

我已经尝试了以下方法:

driver.implicitly_wait(10)
login_button = driver.find_element_by_class_name('myLoginButton')
login_button.click()

# login_button = driver.find_element_by_xpath('//button[text()="Login"]')
# login_button = 
# driver.find_element_by_xpath("//button[@class='myLoginButton'] 
# [.='Login']")
# login_button = driver.find_element_by_css_selector('myLoginButton')

注释行是我使用的替代方法。

请对我温柔一点。我是一个绝对的 Python 和 Selenium 新手。

提前谢谢你!

【问题讨论】:

  • 你错过了关于获取 url 的行,尝试在之后设置睡眠,然后再尝试获取元素,或者执行一些函数来检查网站是否已完全加载。这个 wait.until(EC.invisibility_of_element_located((By.XPATH .....)) 也很好用
  • 请检查标签元素是否为iframe的子元素。如果是这样,你必须切换到框架,然后你可以点击元素
  • 检查是否存在任何 iframe。如果您没有正确切换到框架,您将收到此错误。
  • 据我所知没有 iFrame。

标签: python html selenium


【解决方案1】:

如果有 iFrame(登录表单包含在 iframe 中),则需要切换到。

driver.implicitly_wait(10
driver.switch_to.frame('Example')
login_button = driver.find_element_by_class_name('myLoginButton')
login_button.click()

【讨论】:

  • 用户通常应该先定位 iframe 元素,然后再切换到它。代码是 iframe = driver.find_element_by_xpath("(//iframe[@class='someClass']") 然后是 driver.switch_to.frame(iframe)
  • 登录不包含在 iFrame 中。如果有帮助,我可以提供更多 HTML 代码。
  • 你能把完整的html代码或url贴在这里吗?
猜你喜欢
  • 1970-01-01
  • 2019-10-13
  • 2021-10-13
  • 1970-01-01
  • 2021-09-29
  • 2015-02-18
  • 2021-09-02
  • 1970-01-01
  • 2020-12-20
相关资源
最近更新 更多