gpt4 book ai didi

java - 使用 selenium 在 Google 搜索页面之间导航 - Java

转载 作者:行者123 更新时间:2023-11-30 07:33:19 26 4
gpt4 key购买 nike

如何在 Google 上搜索某些内容,单击链接,然后返回到搜索并单击以下链接(不重复已单击的链接),在页面完成链接后,导航到第 2 页并连续重复相同的步骤?

到目前为止,我可以转到第一个链接,转到该页面并返回到仅搜索的链接列表。

    package Search;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class GoogleSearch {

public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub


System.setProperty("webdriver.ie.driver", "C:/Users/paulo.roberto/Documents/eclipse/Selenium/IEDriverServer.exe");
DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver driver = new InternetExplorerDriver(caps);
driver.manage().window().maximize();
driver.manage().deleteAllCookies();

driver.get("https://www.google.com.br");

driver.findElement(By.name("q")).sendKeys("test");
driver.findElement(By.name("btnG")).click();

WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("resultStats")));


// find the number of pages
int size = driver.findElements(By.cssSelector("[valign='top'] > td")).size();
for(int j = 1 ; j < size ; j++) {
if (j > 1) {// we don't need to navigate to the first page
driver.findElement(By.cssSelector("[aria-label='Page " + j + "']")).click(); // navigate to page number j
}

String pagesearch = driver.getCurrentUrl();

List<WebElement> findElements = driver.findElements(By.xpath("//*[@id='rso']//h3/a"));
System.out.println(findElements.size());

for(int i=0;i<findElements.size();i++){
findElements= driver.findElements(By.xpath("//*[@id='rso']//h3/a"));
findElements.get(i).click();

driver.navigate().to(pagesearch);
// or driver.navigate().back();
}
}



}

}

控制台上的消息:

Started InternetExplorerDriver server (32-bit)
2.48.0.0
Listening on port 37101
10
10
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Search.GoogleSearch.main(GoogleSearch.java:48)

最佳答案

您可以使用嵌套循环。一种用于在结果页面之间导航,另一种用于单击结果

// find the number of pages
int size = driver.findElements(By.cssSelector("[valign='top'] > td")).size();
for(int j = 1 ; j < size ; j++) {
if (j > 1) {// we don't need to navigate to the first page
driver.findElement(By.cssSelector("[aria-label='Page " + j + "']")).click(); // navigate to page number j
}

String pagesearch = driver.getCurrentUrl();

List<WebElement> findElements = driver.findElements(By.xpath("//*[@id='rso']//h3/a"));
System.out.println(findElements.size());

for(int i=0;i<findElements.size();i++){
findElements= driver.findElements(By.xpath("//*[@id='rso']//h3/a"));
findElements.get(i).click();

driver.navigate().to(pagesearch);
// or driver.navigate().back();
}
}

关于java - 使用 selenium 在 Google 搜索页面之间导航 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35750099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com