提问者:小点点

如何访问URL在src属性在iframe?


我正在尝试在表单内的文本字段中发送Keys。但是这个表单放在带有src属性的链接中。属性src指的是那个链接在框架标签中。

这是超文本标记语言代码

<div class="fancybox-overlay fancybox-overlay-fixed" style="width: auto; height: auto; display: block;"><div class="fancybox-wrap fancybox-desktop fancybox-type-iframe fancybox-opened" tabindex="-1" style="width: 647px; height: auto; position: absolute; top: 20px; left: 351px; opacity: 1; overflow: visible;"><div class="fancybox-skin" style="padding: 15px; width: auto; height: auto;"><div class="fancybox-outer"><div class="fancybox-inner" style="overflow: auto; width: 617px; height: 277px;"><iframe id="fancybox-frame1468468198811" name="fancybox-frame1468468198811" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" scrolling="auto" src="addproductgroup.aspx?q=hS9DFK23Nh8Xk29sPZN9j%2bqXSaPgqztzEsozxWSIrSbx9JdDslfYJg%3d%3d"></iframe></div><title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a></div></div></div>

这是fancybox中表单的图像

fancybox中的表单

我已经用过这个代码了但是没用

WebElement tambahGroup = driver.findElement(By.id("aTambah"));
tambahGroup.click();
WebElement iframe;
iframe = driver.findElement(By.id("fancybox-frame1468468198811"));
driver.switchTo().frame(iframe);
String src = ((JavascriptExecutor)driver).executeScript("return arguments[0].attributes['src'].value;", iframe).toString();
driver.get("http://member.indotrading.com/product/"+src);
WebElement namaGroup = driver.findElement(By.id("txtProdukGroup"));
namaGroup.sendKeys("Bunga Mawar");
WebElement namaGroupEng = driver.findElement(By.id("txtProductGroupEnglish"));
namaGroupEng.sendKeys("Rose Flower");
Select indukGroup = new Select(driver.findElement(By.id("ddlParent")));
indukGroup.selectByVisibleText("BUN6A");
WebElement btnSave = driver.findElement(By.id("btnAdd"));
btnSave.click();// Switching to Parent window i.e Main  
Window.driver.switchTo().defaultContent();

我发现了这个错误信息

线程"main"org. openqa.selenium.NoSuchElementException中的异常:无法定位元素:{"method":"id","selector":"fancybox-frame1468468198811"}命令持续时间或超时时间:837毫秒有关此错误的留档,请访问:http://seleniumhq.org/exceptions/no_such_element.html

我怎么能到达链接中的文本字段,因为这个链接在iframe标签和fancybox中。非常感谢你的帮助。


共1个答案

匿名用户

元素无法识别的主要原因是id不是常量它一直在变化。要处理此类情况,您可以借助regex

您可以使用xpath来识别元素。

driver.findElement(By.xpath("//iframe[starts-with(@id, 'fancybox-frame')]"));