如何在搜索字段中搜索和输入数据

时间:2015-02-09 01:14:10

标签: selenium selenium-webdriver

我的情景:

  1. 创建ID
  2. 在步骤1中创建的搜索字段中输入Id。
  3. 如果ID在当前屏幕上可见/可用的ID列表中可用(下面的屏幕截图),我可以获取ID,然后进入搜索字段。但是,如果当前屏幕上的ID不可见/不可用,则脚本无法检索它。在这种情况下,我必须单击右箭头按钮前进到下一个列表,在那里搜索id,然后在搜索字段中输入。

    如果在第一个屏幕中显示,则下面的代码会获取ID。我确实尝试使用if语句,但它不起作用。非常感谢任何帮助!

    我的剧本:

    /*3. Enter the Site ID of the advertiser created in the previous step.*/
    
            //this finds the ANY <a> tag with the text supplied by the site_id
            WebElement siteId = driver.findElement(By.xpath("//a[.='" + site_id + "']"));
            WebDriverWait wait = new WebDriverWait(driver, 60);
            wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//a[.='" + site_id + "']")));
    
            if(!(driver.findElement(By.xpath(PvtConstants.READ_SITES_IDS)).getText().contains("//a[.='" + site_id + "']"))){
    
    //click on the Right-Arrow Button
                driver.findElement(By.xpath(".//*[@id='dataTableSite_wrapper']/div[3]/div[2]/span[3]")).click();
    
              //get a text/copy of the site_id
                String getThePreviouslyCreatedsiteId = siteId.getText().trim();
    
                //insert the text into the Advanced Filters Search Field
                driver.findElement(By.id(PvtConstants.READ_SITES_ADVANCED_FILTER_SITE_SEARCH_FIELD)).sendKeys(getThePreviouslyCreatedsiteId);
    

    UI截图: enter image description here

1 个答案:

答案 0 :(得分:1)

在这种情况下你可以做一件事......

得到否。你得到的条目(如此处27)并将其除以否。你必须去的分页。之后在循环中(就像这里它将是3),使用给定的site_id通过xpath找到元素,如果它可用,它将打破循环,否则单击下一页。 代码有点像这样:

WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement siteId = null;
while(i!=pagination){ // pagination is no. of pages you need to scrap
    try{
        siteId = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//a[.='" + site_id + "']"))); // will check for element to be visible, if not found then timeout exception will be thrown
        break; // if found will break the loop
    } catch(TimeoutException toe){
          driver.findElement(By.xpath(".//*[@id='dataTableSite_wrapper']/div[3]/div[2]/span[3]")).click(); // clicking next arrow 
          i++; // incrementing counter
    }
}