Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用Selenium在iframe中查找或定位元素_C#_Selenium_Automation - Fatal编程技术网

C# 无法使用Selenium在iframe中查找或定位元素

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

我正在尝试编写一个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.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会自动处理所有事情。你想试试吗?