java selenium 如何使用 if else

标签 java selenium xpath

有一个包含应用程序编号和用户数据的表。在表格的开头,最后的申请号是一个绿色箭头。表中可以有无限多个字段,并且它总是会发生变化。 我需要找到申请号旁的绿色箭头,然后相应地单击它。

尝试做类似的事情

String myorder = "629/0000/000000021059";


    if (myorder.equalsIgnoreCase(driver.findElement(By.xpath("/html/body/table/tbody/tr[1]/td[2]/div[2]/div/div[2]/div[2]/div/div/div/div/div[1]/table/tbody/tr/td[5]\n")).getText())){
        driver.findElement(By.xpath("/html/body/table/tbody/tr[1]/td[2]/div[2]/div/div[2]/div[2]/div/div/div/div[1]/div[1]/table/tbody/tr/td[18]/a/img\n")).click();

    }  if (myorder.equalsIgnoreCase(driver.findElement(By.xpath("/html/body/table/tbody/tr[1]/td[2]/div[2]/div/div[2]/div[2]/div/div/div/div[1]/div[2]/table/tbody/tr/td[5]\n")).getText())) {
        driver.findElement(By.xpath("/html/body/table/tbody/tr[1]/td[2]/div[2]/div/div[2]/div[2]/div/div/div/div[1]/div[2]/table/tbody/tr/td[18]/a/img\n")).click();

    } if (myorder.equalsIgnoreCase(driver.findElement(By.xpath("/html/body/table/tbody/tr[1]/td[2]/div[2]/div/div[2]/div[2]/div/div/div/div[1]/div[3]/table/tbody/tr/td[5]\n")).getText())) {
        driver.findElement(By.xpath("/html/body/table/tbody/tr[1]/td[2]/div[2]/div/div[2]/div[2]/div/div/div/div[1]/div[3]/table/tbody/tr/td[18]/a/img\n")).click();

依此类推,最多100+ 第一个问题是我真的不喜欢编写 if else 100 次的选项。并且应用id所在的div中只有一位数字与绿色箭头所在的div中的数字不同(img)

第二个问题是无论我怎么插入break;当找到正确的应用程序时,他单击所需的箭头,但显然在尝试继续搜索页面后,但页面已经更改并且错误出现

(WARNING: The server did not provide any stacktrace information)

如果我使用上面附加的代码或只是元素的指示(它紧接在结果正确且页面已更改的元素之后),并附有注释,表明我找不到它,如果我使用 else if 和break;

尝试这样做

for (int i = 1; i < 25; i++) {
        String myorder = "629/6300/000000412067";

        if (myorder.equalsIgnoreCase(driver.findElement(By.xpath("/html/body/table/tbody/tr[1]/td[2]/div[2]/div/div[2]/div[2]/div/div/div/div[1]/div["+ i++ +"]/table/tbody/tr/td[5]\n")).getText())) {
            driver.findElement(By.xpath("/html/body/table/tbody/tr[1]/td[2]/div[2]/div/div[2]/div[2]/div/div/div/div[1]/div["+ i++ +"]/table/tbody/tr/td[18]/a/img\n")).click();
            break;
        }

但是,如果找到该项目,则它会单击表格中的第一个箭头,而不是单击与申请号同一列中的箭头

我非常感谢您的帮助!

最佳答案

XPath 是从 1 开始的,而不是 0,因此您认为需要加 1 是正确的,但是,这两个不相等,因为 i++ 修改了 i 的值> (甚至像您拥有的那样内联),您在循环内执行两次。因此,循环 i 的第二次迭代将为 3,而不是预期的 1。在您的循环中,将 i++ 替换为 i + 1 ,您应该可以开始了。

关于java selenium 如何使用 if else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61664160/

相关文章:

php - Yii Framework testing with PHPUnit and Selenium 错误/警告

java - JUnit 测试函数的 CodeLens 未出现在 VSCode 中

selenium - Docker:尽管演示成功,但无法查看正在运行的容器

javascript - 如何使用 Protractor/Selenium 将鼠标移动到任意点

php - 使用 PHP SimpleXML Xpath 解析带有命名空间的 XML 时遇到问题

xpath - 如何检查文本值是否存在

c# - 通过 XPath 和 HtmlAgilityPack 获取属性值

java - 字符串的内存分配/管理及其后续垃圾回收

java - 帮助从执行算法生成图形

java - 如何在 Java 中逐行读取文本文件并分离每一行的内容?