当前位置: 首页 > 知识库问答 >
问题:

带有Find Element命令的字符串变量Java

朱风史
2023-03-14

你好,以下所有的代码在这里工作,它是。

String content = FileUtils.readFileToString(new File("C:\\PayrollSync\\prepayroll.txt"));
        String [] Arrayclients = content.split("\n");
        // begin for loop
        for(String client : Arrayclients) { 

        PP_OBJ_CycleData.verifysearch(driver);
        PP_OBJ_CycleData.searchbox(driver).clear();         
        PP_OBJ_CycleData.searchbox(driver).sendKeys(client);
        PP_OBJ_CycleData.searchbox(driver).sendKeys(Keys.BACK_SPACE);
        Thread.sleep(4000);

        //WebElement dropdown = driver.findElement(By.xpath(".//*[@title="+client+"]"));
        //dropdown.click();
        //driver.findElement(By.xpath(".//*[(text(),"+client+"]")).click();
        driver.findElement(By.xpath("//*[contains(text(),"+client+")]")).click();;
         Thread.sleep(2000);

        PP_OBJ_CycleData.practitioner(driver).click();

问题:驱动程序没有。findElements正在工作,例如:

//WebElement dropdown = driver.findElement(By.xpath(".//*[@title="+client+"]"));
        //dropdown.click();
        //driver.findElement(By.xpath(".//*[(text(),"+client+"]")).click();
        driver.findElement(By.xpath("//*[contains(text(),"+client+")]")).click();;
         Thread.sleep(2000);

我的失败跟踪显示找不到元素by.xpath(“//*[contains(text(),”+client+“)]”))。但是,我正在等待该元素在下一页时显示。下面是我的等待。

 Wait<WebDriver> wait = new FluentWait<WebDriver>(driver).withTimeout(20, TimeUnit.SECONDS);
           element = driver.findElement(By.id("toolbarQuickSearch"));

           wait.until(ExpectedConditions.or(
                ExpectedConditions.visibilityOf(element),
                ExpectedConditions.elementToBeClickable(element)
            ));

从我所看到的问题来看,如果包含字符串的变量被输入到搜索字段并且字符串名称可见,selenium无法找到要单击的字符串名称,例如:

我可以把这个放进去,它就会一直点击它:

driver.findElement(By.xpath("//*[text()='midrfrate']"]"));

然而,如果我做了这样的事情,它就找不到了:

 driver.findElement(By.xpath(".//*[(text(),"+client+"]")).click();
  driver.findElement(By.xpath("//[contains(text(),"+client+")]")).click();

请帮帮我,我尝试了以下方法,但没有成功:如何在XPath中使用变量?

共有1个答案

章德惠
2023-03-14

您的xpath:

driver.findElement(By.xpath(“//*[contains(text(),”+client+“)]”))。click();:

>

  • 应包含撇号

    contains块中的文本应包含确切的字符串(您在客户端变量'midrfrate'中有尾随空格)。

    最终的xpath是:

    driver.findElement(by.xpath(“//*[contains(text(),‘”+client.trim()+“')]”)).click();

    其中trim()方法从客户端变量中移除前导和后导空格。

  •  类似资料:
    • 我正在尝试尽可能简单地自动化GroupMe机器人。从命令行发送消息的简单方法是使用以下命令: 在Shell脚本中,我想用替换,其中被设置为来自不同命令的输出。这可能吗? 我用不起作用的内容替换了“您的留言”: 任何放在双引号(")内的东西都被视为字符串,所以在这些方面没有做太多尝试。

    • 我有一个带有几个API RESTendpoint的Java Spring Boot应用程序。

    • 问题内容: Java中的字符串构建使我感到困惑。我讨厌做这样的事情: 或者,使用StringBuilder,如下所示: 我肯定会丢失一些东西。有更好的方法。就像是: 代替: 做: 要么: 问题答案: 如果您使用的是Java 5或更高版本,则可以使用: 有关详细信息,请参见。

    • 我正在为学校制作一种API,用于定制XML编写器。我有: 我需要帮助的是: 我想创建一个与数据[i]同名的元素。 我使用的是dom4jxml。顺便说一句,放在这个罐子里。 我听说过一种叫做hashmap的方法,如果这是正确的方法,请有人解释一下如何使用它。

    • 问题内容: 我正在使用SQL Server 2008 R2。我想从数据不是英语的表中检索行。 但是,当我键入命令时,它什么也不会返回。 有什么建议,如何检索这样的记录? 问题答案: 您是否尝试过将字符串文字声明为unicode?

    • 问题内容: 我试图理解字符串比较与字符串比较的输出。需要明确的是,我拥有使用==和equals比较两个字符串的类。我试图将==和equals()的输出合并为字符串。equals()的输出会连续显示,但==的输出不会 连续显示。使用Java的装箱功能,将与字符串连接的布尔值联系起来。equals和==都返回布尔值。那么为什么会有这种差异呢?有人可以解释吗? 输出 更新:答案 如果不使用s1 == s