【发布时间】:2020-01-19 10:04:39
【问题描述】:
在 Visual Studio 中,我使用 Selenium 尝试单击 iframe 内的元素。 代码:
问题是如果我像这样使用ECMMyChangeActions 会出错:
driver.SwitchTo().Frame("ECMMyChangeActions");
错误:
Message: OpenQA.Selenium.NoSuchFrameException : No frame element found with name or id ECMMyChangeActions
使用 Selenium IDE 我已经记录了这个测试用例,并确认在单击此 iframe 中的任何元素之前需要更改 iframe。
使用 driver.SwitchTo().Frame(0); 在 Visual Studio 中有效,但我仍然无法在其中找到任何元素。所以我怀疑 iframe index=0 不正确。
我已尝试通过计算此 for 循环中页面上的所有 iframe 来确定使用哪个 iframe:
[Test]
public void CountIframes()
{
int size = driver.FindElements(By.TagName("iframe")).Count();
for (int i = 0; i <= size; i++)
{
driver.SwitchTo().Frame(i);
int total = driver.FindElements(By.XPath("//td[contains(@title,'Find...')]")).Count();
Console.Write(total);
driver.SwitchTo().DefaultContent();
}
}
我使用这个 for 循环得到的输出是:000。据我了解这个 for 循环代码,如果在任何 iframe 中找到我指定的元素,它只会生成一个“1”。所以000 意味着在任何 iframe 中都找不到这样的元素。
请帮我找到正确的 iframe。
【问题讨论】:
标签: c# visual-studio selenium iframe