Selenium WebDriver findElement(By.xpath()) 不适用于我的情况
Selenium WebDriver findElement(By.xpath()) not working for my case
我正在尝试在 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、名称或 class)
<input name="userName" class="LoginTextField" 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 中的元素,请告诉我。
据我所知,您关注的框架是框架集标签下的第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']"));
我正在尝试在 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、名称或 class)
<input name="userName" class="LoginTextField" 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 中的元素,请告诉我。
据我所知,您关注的框架是框架集标签下的第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']"));