【问题标题】:Unable to locate an element implemented as <td> using Selenium Web Driver无法使用 Selenium Web 驱动程序找到实现为 <td> 的元素
【发布时间】:2020-09-30 20:43:21
【问题描述】:

我想通过 C# 使用 Selenium Web 驱动程序来定位 BNK1 的值。我发现我的本地网站有 2 个 iframe。我尝试更改以使 iframe 更改为详细框架,以便我在表中获得 BNK1 的值。 我不知道我无法使用 XPath 找到 iframe 的问题是怎么回事。

但我有错误“没有这样的元素:无法找到元素:{“method”:“xpath”,“selector”:“//iframe[@class='tabcontentiframe']”}

IWebElement detailFrame = driver.FindElement(By.XPath("//iframe[@class='tabcontentiframe']"));
driver.SwitchTo().Frame(detailFrame);

IWebElement element = driver.FindElement(By.XPath("//table/tbody/tr/td[contains(text(),'BNK1')]"));
String text = element.Text;

【问题讨论】:

  • 是哪一页?
  • @keepAlive,我想通过阅读本网站获取元素值为 BNK1。
  • 哪个网站?哪个网址?如果您想有效地获得帮助,我们(可能)需要访问您正在谈论的确切站点。一些您不知道的特性可能会受到威胁。
  • 它是我的本地网站,我想通过使用 XPath 获取表中 BNK1 的值
  • 嗯,所以....你的页面中有 iframe 吗?

标签: c# selenium


【解决方案1】:

首先,在尝试任何操作之前,让我们确保您的页面已完全加载,使用重手的方法,

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

其次,假设您要访问的元素在 iframe 内,您首先需要切换到它。实际上,您在评论中提到您有两个嵌套的 iframe,

// Let's switch to the parent frame
IWebElement tabcontentiframe = driver.FindElement(By.XPath("//iframe[@class='tabcontentiframe']"));
driver.SwitchTo().Frame(tabcontentiframe);

// Let's switch to the child frame
IWebElement iframeHome = driver.FindElement(By.XPath("//iframe[@id='iframeHome']"));
driver.SwitchTo().Frame(iframeHome);

现在,你可以做

IWebElement element = driver.FindElement(By.XPath("//table/tbody/tr/td[contains(text(),'BNK1')]"));
// or                                    By.XPath("//td[contains(text(),'BNK1')]")
// or                                    By.XPath("//td[text()='BNK1']")


完成后,您可能想要切换回主框架,
driver.SwitchTo().DefaultContent();

【讨论】:

  • @Jon 我们是否同意父 iframe 是 tabcontentiframe 之一?
  • 谢谢哥们,它工作了!!!!!!非常感谢您的帮助,并对不清楚的信息造成混淆感到抱歉。下次我会注意的
【解决方案2】:

您可以使用相对 xpath 找到元素:

IWebElement element = driver.FindElement(By.XPath("//td[text()='BNK1']"));

【讨论】:

  • 我仍然有错误无效选择器:由于以下错误,无法使用 xpath 表达式 //td[text(),'BNK1')] 定位元素:SyntaxError:无法执行'评估' on 'Document': 字符串 '//td[text(),'BNK1')]' 不是有效的 XPath 表达式。
  • @JonathanK 错误中的 xpath 与我在答案中输入的不同。请从答案中选择确切的 xpath,如果它有效,请告诉我。
  • 是的,我已经应用了您提供的确切答案。但我有错误没有这样的元素:无法找到元素:{“method”:“xpath”,“selector”:“//td[text()='BNK1']”}
  • @JonathanK 错误中的 xpath 包含逗号符号',但是在我的回答中,我使用了等号'='
  • 是的,我使用了你提供的答案,我分享给你,这是我控制台上出现的错误消息
猜你喜欢
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 2015-09-19
  • 2020-12-29
  • 2023-04-04
  • 2019-09-20
  • 2018-03-05
  • 1970-01-01
相关资源
最近更新 更多