我正在尝试在表单内的文本字段中发送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中。非常感谢你的帮助。
元素无法识别的主要原因是id
不是常量
它一直在变化。要处理此类情况,您可以借助regex
。
您可以使用xpath
来识别元素。
driver.findElement(By.xpath("//iframe[starts-with(@id, 'fancybox-frame')]"));