如何搜索并将数据输入搜索字段
How to search and enter data into the search field
我的场景:
- 创建一个 ID
- 在第 1 步中创建的搜索字段中输入 ID。
如果该 ID 在当前屏幕上的 ID 列表 visible/available 中可用(下面的屏幕截图),我可以获取该 ID,然后进入搜索字段。但是,如果当前屏幕上的 id 不是 visible/available,脚本将无法检索它。在这种情况下,我将不得不单击 Right-Arrow 按钮前进到下一个列表,在那里搜索 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截图:
在这种情况下你可以做一件事...
得到号码。你得到的条目(像这里的 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
}
}
我的场景:
- 创建一个 ID
- 在第 1 步中创建的搜索字段中输入 ID。
如果该 ID 在当前屏幕上的 ID 列表 visible/available 中可用(下面的屏幕截图),我可以获取该 ID,然后进入搜索字段。但是,如果当前屏幕上的 id 不是 visible/available,脚本将无法检索它。在这种情况下,我将不得不单击 Right-Arrow 按钮前进到下一个列表,在那里搜索 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截图:
在这种情况下你可以做一件事...
得到号码。你得到的条目(像这里的 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
}
}