我正在尝试编写一个用户在Python中键入代码的代码,按Enter键,此应用程序“ Python教程Tutorials Point”位于第4页。我的逻辑是:使用getPageSource找到该项目,并继续单击Next按钮。但是我看到两个问题:
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;
}
}
}
}
我可以使用一些提示/帮助。感谢您的宝贵时间。
答案 0 :(得分:0)
pagesFound指的是“下一步”按钮(// a [contains(@href,'/ s?k = python')])。我相信pagesFound应该使用上一个禁用的数字,该数字指的是pagesFound的实际数量,而不是“下一步”按钮。复制粘贴上面的代码,列表为空。