我正在尝试使用selenium webdriver中的xpath值来识别IE中的元素,但它不适用于任何一个
driver.findElement(By.xpath("//input[@id='userName']"))
driver.findElement(By.xpath("//*[@id='userName']"))
也试过完整的xpath但是没有用 -
//frameset[contains(@id,'topFrameset')]/frame[4]/html/body/table/tbody/tr[1]/td/table/form/tbody/tr[5]/td/table/tbody/tr[1]/td/input
以下是我尝试访问的页面上的输入标记(页面上没有重复的ID,或名称或类)
<input name="userName" class="eGainLoginTextField" id="userName"
onkeyup="OnKeyDownOnObject()" type="text" valign="middle"/>
请注意,此输入标记位于iframe内部,如下面的整个路径
//frameset/frame[4]/html/body/table/tbody/tr[1]/td/table/form/tbody/tr[5]/td/table/tbody/tr[1]/td/input
如果webdriver中有标准方法可以捕获iframe中的元素,请告诉我。
答案 0 :(得分:0)
如我所见,您的相关框架是框架集标记下的第4个框架,您可以首先切换到它,然后尝试查找元素。
请查看以下代码是否适用于您:
//To switch to the required frame, if found, in 20 seconds
try{
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//frameset[contains(@id,'topFrameset')]/frame[4]")));
}catch(Throwable e){
System.err.println("Error while switching to the frame. "+e.getMessage());
}
//locating the input element
driver.findElement(By.xpath("//input[@id='userName']"));