C# 无法使用Selenium在iframe中查找或定位元素
我正在尝试编写一个C#Selenium脚本来更改以下项目的大小: 即使在尝试先切换到帧之后,我也无法在iframe弹出窗口中锁定任何对象 要使iframe显示,我使用以下命令单击了项目1的快速查看:C# 无法使用Selenium在iframe中查找或定位元素,c#,selenium,automation,C#,Selenium,Automation,我正在尝试编写一个C#Selenium脚本来更改以下项目的大小: 即使在尝试先切换到帧之后,我也无法在iframe弹出窗口中锁定任何对象 要使iframe显示,我使用以下命令单击了项目1的快速查看: var element = driver.FindElement(By.XPath("//*[@id=\"homefeatured\"]/li[1]/div/div[1]/div/a[1]/img")); Actions actions = new Actions(driver); actions
var element =
driver.FindElement(By.XPath("//*[@id=\"homefeatured\"]/li[1]/div/div[1]/div/a[1]/img"));
Actions actions = new Actions(driver);
actions.MoveToElement(element);
actions.Click();
actions.Perform();
然后显示了iframe窗口,但即使尝试切换到以下窗口,也无法在其中找到任何内容:
框架3是firefox ide选择的
driver.SwitchTo().Frame(3);
选择默认帧,然后选择不同的帧
driver.SwitchTo().DefaultContent();
正在尝试使用帧名称
driver.SwitchTo().Frame("fancybox-margin fancybox-lock");
正在尝试帧id为0,1,2,3
它从不通过XPath、ID、名称或任何其他方式找到任何元素。我正试着把尺寸下拉到改变
尽管我已经尝试了很多其他更高级别的XPath,但我正在寻找的XPath是
//*[@id="group_1"]
非常感谢您的帮助,我已经被困这么久了。用这个来切换,它会工作的,我在末尾有一些数字,而且它会不断变化
driver.SwitchTo().Frame(By.Xpath("//iframe[starts-with(@id,'fancybox-frame')]"));
最终成功地解决了这个问题,在导航到iframe 3之后,又有一个iframe在更下面,所以它失败了,因为它的目标是iframe 1或2中的元素。还需要在找到元素之前添加延迟,因为它在iframe完成加载之前正在搜索。感谢您的帮助,它显示了它无法将OpenQA.Selenium.By转换为int错误,当使用它时?@Ronald Mcd请研究如何在C#上写,我不知道C#,我正在使用Selenium Ruby绑定(WATIR)。我检查了一下,效果很好,我决定写一个答案,因为我理解这个问题。对不起,如果感谢你的帮助听起来很讽刺的话,那是真诚的帮助。@Ronald Mcd Hey绝对不是问题,事实上我不知道C#,这就是我说你的原因。你认识鲁比吗?如果您了解Ruby,您可以使用位于Ruby Selenium绑定顶部的WATIR,您甚至不需要切换框架,WATIR会自动处理所有事情。你想试试吗?