编辑:
元素在iframe中,这就是最终的工作方式:
WebDriverWait wait = new WebDriverWait(_driver, 60);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By
.xpath("//*[@class='IFrameID']")));
WebElement element_t = _driver.findElement(
By.xpath("//*[@myattribute='mytest']"));
编辑:
我的问题似乎是页面的结构。我尝试了不同的东西,我只能通过id获取身体,我试图通过id或任何其他属性找到的其他元素无法找到......
我试图通过使用By.xpath方法获取一个元素,xpath本身在firebug / firepath中使用时效果很好,但是当在java应用程序中使用时,我得到一个例外:
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":".//*[@myattribute='mytest']"}
我尝试访问的属性不是标准的html,而是从框架生成,因此该字段如下所示:
<input id="F_19" class="FIELDInputEdit" type="text" style=" width:100%;" maxlength="40" myattribute="mytest" name="CC">
javacode本身看起来像这样:
WebElement element_t = _driver.findElement(
By.xpath(".//*[@myattribute='mytest']"));
由于唯一已知的属性是这个,我没有办法访问输入字段。 我使用的是Firefox 17.0.11
答案 0 :(得分:0)
良好做法(imho)在webdriver中使用xpath之前使用selenium ide(http://docs.seleniumhq.org/download/)测试它
错误可能是因为«。»之前的«。»。尝试删除它。
阅读本文:http://www.w3schools.com/xpath/xpath_syntax.asp
.//*[@myattribute='mytest']
«。»=选择当前节点
«//»=从当前节点中选择与选择匹配的文档中的节点,无论它们位于何处
«*»=匹配任何元素节点
«[@ myattribute ='mytest']»(= [@ myattribute = \“mytest \”])=节点,包含属性“myattribute”,其值为“mytest”
现在,_driver.findElement(By.xpath("//*[@myattribute='mytest']"))
=搜索第一个节点的整页,其属性为«myattribute»,其值为«mytest»
_driver.findElement(By.xpath("//input[@myattribute='mytest']"))
=使用«myattribute»=«mytest»
搜索第一页输入的整页 _driver.findElement(By.xpath("//input[@myattribute='mytest']")).then(By.path("./*[@comeAtr]"))
=输入«myattribute»=«mytest»找到任何带有atribute =«
答案 1 :(得分:0)
您是否尝试过使用CSS选择器?
By.cssSelector("input[myattribute=\"mytest\"]")
答案 2 :(得分:0)
元素在iframe中,这就是最终的工作方式:
WebDriverWait wait = new WebDriverWait(_driver, 60);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By
.xpath("//*[@class='IFrameID']")));
WebElement element_t = _driver.findElement(
By.xpath("//*[@myattribute='mytest']"));