如何使用Selenium WebDriver(在iframe中)选择不唯一的元素?

时间:2017-03-13 20:43:04

标签: c# visual-studio iframe xpath selenium-webdriver

我正在尝试选择没有唯一ID或类的页面元素。在this页面上将它设为radiobutton。当我尝试使用名称来查找radiobutton

var radioButton = driver.FindElements(By.Name("gender"))[1];
radioButton.Click();

Visual Studio返回“mscorlib.dll中发生了”System.ArgumentOutOfRangeException类型的未处理异常“。

添加了超时以确保页面已完全加载。但那不是解决方案。

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

我试图避免使用XPath,但这也不起作用another exception occurred

var radioButton = driver.FindElement(By.XPath("/html/body/form/input[2]"));
radioButton.Click();

所以我想弄清楚:

  1. 在这种情况下选择radiobutton的正确方法是什么?
  2. 如何摆脱OutOfRange异常?
  3. 为什么XPath在这种情况下不起作用?
  4. 任何帮助都非常感激。

2 个答案:

答案 0 :(得分:0)

只要页面中没有带有相同值的单选按钮,就可以使用input[value='male']之类的CSS选择器。

答案 1 :(得分:0)

问题是由iframe引起的。添加此代码以便能够选择其中的元素。如果相应的iframe中没有名称,请see this discussion

driver.SwitchTo().Frame(FrameName);