簡體   English   中英

帶查找元素命令的字符串變量Java

[英]String Variable with Find Element Commands Java

您好以下所有代碼都可以在這里工作。

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();

問題:driver.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)
            ));

從我能看到的問題來看,是否在將包含字符串的變量輸入到搜索字段中並且字符串名稱可見之后,硒無法找到要單擊的字符串名稱,例如以下示例:

在此處輸入圖片說明

我可以把它放進去,它會一直點擊它:

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

但是,如果我做這樣的事情,它找不到它:

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

請幫助我,我嘗試了以下失敗的嘗試: 如何在XPath中使用變量?

字符串".//*[(text(), " + client + "]"等於".//*[(text(), midrfrate]"

您需要將變量放在撇號中

".//*[contains(text(), '" + client + "']"

您的xpath:

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

  1. 應包含撇號

  2. 包含塊中的文本應包含確切的字符串(客戶端變量“ midrfrate”中具有尾隨空格)。

最終的xpath是:

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

其中trim()方法從客戶端變量中刪除前導和尾隨空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM