python - 如何正确使用 find_element_by_link_text() 不引发 NoSuchElementException?

标签 python selenium selenium-webdriver

我有一个这样的 HTML 代码:

<div class="links nopreview"><span><a class="csiAction"
href="/WebAccess/home.html#URL=centric://REFLECTION/INSTANCE/_CS_Data/null">Home</a></span>&nbsp;•&nbsp;<span><span><a class="csiAction"
href="/WebAccess/home.html#URL=centric://SITEADMIN/_CS_Site">Setup</a></span>&nbsp;•&nbsp;</span><span><a
title="Sign Out" class="csiAction csiActionLink">Sign Out</a></span></div>

我想点击带有文本Home的链接。由于登录后出现此主页链接,我有这样的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import re

browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://myServer/WebAccess/login.html") # Load App page
elem = browser.find_element_by_name("LoginID") # Find the Login box
elem.send_keys("Administrator")
elem = browser.find_element_by_name("Password") # Find the Password box
elem.send_keys("Administrator" + Keys.RETURN)
#try:
elem = browser.find_element_by_link_text("Home")
elem.click()

登录之前的部分效果很好。但是最后一行是有问题的

elem = browser.find_element_by_link_text("Home")

从 HTML 代码中可以看出,它会在 Home 链接所在的位置引发此 NoSuchElementException。

raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: u'Unable to locate element: {"method":"link text","selector":"Home"}' 

请指导我做错了什么?

最佳答案

您是否尝试过为此添加隐式等待,以便它等待而不是快速运行。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import re

browser = webdriver.Firefox() # Get local session of firefox

browser.implicitly_wait(10) #wait 10 seconds when doing a find_element before carrying on

browser.get("http://myServer/WebAccess/login.html") # Load App page
elem = browser.find_element_by_name("LoginID") # Find the Login box
elem.send_keys("Administrator")
elem = browser.find_element_by_name("Password") # Find the Password box
elem.send_keys("Administrator" + Keys.RETURN)
#try:
elem = browser.find_element_by_link_text("Home")
elem.click()

implicitly_wait 调用使浏览器轮询,直到项目在页面上并且可见以进行交互。

关于python - 如何正确使用 find_element_by_link_text() 不引发 NoSuchElementException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6936149/

相关文章:

java - 使用 selenium webdriver 处理多域 cookie

c# - 如何限制在C# Selenium 中运行的线程

javascript - 如何在中继器中定位并单击 ng-click 按钮

java - 定位元素和 getText() 值

python - 如何正确停止 phantomjs 执行

python访问列表中的第二个到最后一个元素

python - 使用 Python 在非常大的文件中查找字节序列

python - 设置在使用 BlobServiceClient 创建的 Azure Blob 容器中的生存时间

testing - 如何单击 Selenium 2 中的弹出式日历向导?

python - 在 Win10 上从 Python 备份 Postgres