我试图删除表中的每一行,直到没有剩下,只有那时我才想继续我的测试用例的其余部分。出于这个原因,我正在使用if / else语句。作为此声明的一部分,我需要选择第一行,单击删除按钮,然后单击确定确认我的操作。问题出在最后一次行动中。我可以通过findElement by.id
找到 OK ,但不能通过类和文本值找到。问题是ID
仅在删除第一行时可靠,因为应用程序使用自动生成的ID's
。这就是为什么我试图通过它的类和文本值找到 OK 。
if(driver.findElement(By.xpath("first row of the table")) != null)
{
driver.findElement(By.xpath("first row of the table")).click(); //select row
driver.findElement(By.xpath("//*[@type='button' and text()='Delete']")).click(); //click delete button
wait.until(ExpectedConditions.elementToBeClickable(By.id("ext-gen483"))); //wait untill the OK button (id=ext-gen483) in dialog box is visible to confirm delete
/** this section is built in to find out why I cant find the OK button. First I catch and print the class and text for the OK button via the id. */
String Klasis = driver.findElement(By.id("ext-gen483")).getAttribute("Class");
System.out.println("Value of Class = "+Klasis);
String Tekstis = driver.findElement(By.id("ext-gen483")).getText();
System.out.println("Value of Text = "+Tekstis);
String xpathOK = "//*[@class='"+Klasis+"'"+" and text()='"+Tekstis+"']";
System.out.println(xpathOK);
driver.findElement(By.xpath(xpathOK)).click();
}
else
打印操作导致:
Value of Class = x-btn-text
Value of Text = OK
//*[@class=' x-btn-text' and text()='OK']
但是无法点击按钮:ElementNotVisibleException:元素当前不可见,因此可能无法与
进行交互但是,如果我使用以下代码单击确定,它可以正常工作:
driver.findElement(By.id("ext-gen483")).click();
这是代表OK按钮的代码行:
<button class=" x-btn-text" id="ext-gen483" type="button">OK</button>
由于建议类中的额外空间可能会影响我更改代码的方式,以便它不再使用类而是按钮属性:
String Klasis = driver.findElement(By.id("ext-gen483")).getAttribute("Class");
System.out.println("Value of Class = "+Klasis);
String Tekstis = driver.findElement(By.id("ext-gen483")).getText();
System.out.println("Value of Text = "+Tekstis);
String Typeis = driver.findElement(By.id("ext-gen483")).getAttribute("Type");
System.out.println("Value of Type = "+Typeis);
String xpathOK = "//*[@type='"+Typeis+"'"+" and text()='"+Tekstis+"']";
System.out.println(xpathOK);
//driver.findElement(By.id("ext-gen483")).click();
driver.findElement(By.xpath(xpathOK)).click();
打印操作导致:
Value of Class = x-btn-text
Value of Text = OK
Value of Type = button
//*[@type='button' and text()='OK']
但它在最后一行仍然失败并显示相同的消息:ElementNotVisibleException:元素当前不可见,因此可能无法与
进行交互有2个按钮符合我的findelement语句。如果我然后选择点击第二个它的工作原理!
List<WebElement> listOfOKbut = driver.findElements(By.xpath("//*[@class=' x-btn-text' and text()='Ja']"));
System.out.println("aantal ja knoppen:"+listOfOKbut.size()); if(listOfOKbut.size() >= 2) {
listOfOKbut.get(1).click();
}
答案 0 :(得分:0)
尝试使用contains代替&#34; =&#34;对于@class部分:
String xpathOK = "//*[contains(@class,'x-btn-text') and text()='OK']";
答案 1 :(得分:0)
要更准确地找到元素,请使用以下方法
String xpath = "//button[contains(@class,'x-btn-text') and text()='OK']"
class or id
为常量的按钮的父元素。
xpath = "//parent//button[contains(@class,'x-btn-text') and text()='OK']"