Я пытаюсь написать код, в котором пользователь набрал текст на Python, нажал Enter, и это приложение "Точка учебных пособий по Python" находится на 4-й странице. Моя логика такова: найдите этот элемент с помощью getPageSource и продолжайте нажимать кнопку «Далее». Однако я вижу 2 проблемы:
1) Найденные страницы 0 - Я ожидаю намного больше страниц, а xpath показывает 56 +
2) Он продолжает нажимать на следующую кнопку и переходит на страницу 6, то есть он не нашел эту книгу на странице 4.
public class AmazonProductSearchTest {
public static WebDriver driver;
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\Downloads\\chromedriver_win32\\chromedriver.exe");
driver= new ChromeDriver();
//WebDriverWait wait = new WebDriverWait(driver,30);
driver.get("https://www.amazon.com/");
driver.findElement(By.xpath("//input[@id='twotabsearchtextbox']")).sendKeys("Python");
driver.findElement(By.xpath("//input[@value='Go']")).click();
//Implicit wait till page loads
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
//Scroll down to find pagination
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("window.scrollBy(0,5000)", "");
//Number of Pages
List<WebElement> pagesFound=driver.findElements(By.xpath("//a[contains(@href, '/s?k=python')]"));
System.out.println("Pages found "+ pagesFound.size());
//Will click on Next link until we find a specific book-using page source
while(!driver.getPageSource().equals("Python tutorial Tutorials Point")){
driver.findElement(By.xpath("//a[contains(text(),'Next')]")).click();
if(driver.getPageSource().equals("Python tutorial Tutorials Point")){
System.out.println("Found searched item");
break;
}
}
}
}
Я мог бы использовать некоторую подсказку / помощь. Спасибо за ваше время.