На сайте так выглядит Название города- Количество вакансий
Сайт: https://amfam.wd1.myworkdayjobs.com/HomesiteCareers/4/refreshFacet/318c8bb6f553100021d223d9780d30be
Подумывал поставить название и соответствующий номер вакансии в HashMap, однако следующий подход, который получает название города, а затем номера вакансий на первом месте, не будет работать.
@Test
public void visitSite() throws InterruptedException {
Thread.sleep(5000);
//ToDo: Verify Locations Heading is displayed- should be Locations
WebElement loc = driver.findElement(By.xpath("//h2//span[@title='Locations']"));
String locTitle = loc.getText();
String expectedTitle = "Locations";
Assert.assertEquals(locTitle, expectedTitle);
//ToDo: Expand the More+ section of Locations title
WebElement expandMore = driver.findElement(By.xpath("//div[@data-metadata-id='locations']//div[@data-automation-id='wd-MoreLink']"));
expandMore.click();
Thread.sleep(4000);
//ToDo: Collect City name and Number of jobs in HashMap
HashMap<String, String> regionJobsMap = new HashMap<String, String>();
//This code below will collect City Names in an ArrayList
ArrayList<String> cities = new ArrayList<String>();
List<WebElement> citiesL = driver.findElements(By.xpath("//div[@data-metadata-id='locations']//div//label"));
for (WebElement ele : citiesL) {
cities.add(ele.getText());
}
//This code below will get City amd Job numbers and add to HashMap
ArrayList<String> jobNumbers = new ArrayList<String>();
List<WebElement> jobsL = driver.findElements(By.xpath("//div[@data-metadata-id='locations']//span"));
for (WebElement ele : jobsL) {
jobNumbers.add(ele.getText().replaceAll("[^0-9]", ""));
}
for (int i = 0, j = 0; i < cities.size() && j < jobNumbers.size(); i++, j++) {
regionJobsMap.put(cities.get(i), jobNumbers.get(j));
}
for(Map.Entry<String,String> mm:regionJobsMap.entrySet()){
System.out.println(mm.getKey() +" " + mm.getValue());
}
}
OUTPUT:
NJ - New Jersey 5
PA - Pennsylvania
Вопрос: Как лучше всего получить название города и соответствующий номер работы? Я не могу придумать 1 xpath, который даст мне оба. Если я использую отдельные xpath, фактические номера городов и вакансий не будут совпадать. Заранее благодарим за уделенное время.