Java 如何使用SeleniumWebDriver访问pdf链接

Java 如何使用SeleniumWebDriver访问pdf链接,java,selenium,Java,Selenium,以下代码的功能如下: 要求用户输入图书的名称 它打开了Firefox 浏览器 加载google.com 使用输入书名 sendkeys() 点击搜索按钮 它显示所有链接 下面是代码 import java.util.*; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.o

以下代码的功能如下:

  • 要求用户输入图书的名称
  • 它打开了Firefox 浏览器
  • 加载google.com
  • 使用输入书名 sendkeys()
  • 点击搜索按钮
  • 它显示所有链接
  • 下面是代码

    import java.util.*;
        import java.util.concurrent.TimeUnit;    
        import org.openqa.selenium.By;
        import org.openqa.selenium.WebDriver;
        import org.openqa.selenium.WebElement;
        import org.openqa.selenium.firefox.FirefoxDriver;
        public class downloaddemo {
            String text ;
            String text1 ;
            WebDriver driver;
            void getTextU()
            {
                Scanner s = new Scanner(System.in);
                System.out.println("Enter Text");
                text = s.nextLine();
                text1 = text + " pdf " ; 
                System.out.println(" Searching for " + text1  +  " .......... ");
            }
    
            public void invokeBrowser()
            {
                System.setProperty("webdriver.gecko.driver","C:\\geckodriver-v0.19.0-win64\\geckodriver.exe");
                driver = new FirefoxDriver();
                driver.manage().deleteAllCookies();
                driver.manage().window().maximize();
                driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
                driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS );
                driver.get("https://www.google.com");
                search();
    
            }
            public void search()
            {
                driver.findElement(By.xpath("//input[@id='lst-ib' and @class='gsfi']")).click(); 
    
                System.out.println(text1);
                driver.findElement(By.id("lst-ib")).sendKeys(text1);
    
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                driver.findElement(By.xpath("//input[@value='Google Search' or  @aria-label='Google Search']")).click();
                //driver.findElement(By.xpath("//span[@class='_ogd b w xsm'] and //a[@href='']")).click();
                /*List<WebElement> list = driver.findElements(By.xpath("//span[@class='_ogd b w xsm']//a[@href]"));
                for (WebElement e : list) {
                    String link = e.getAttribute("href");
                    System.out.println(e.getTagName() + "=" + link + " , " + e.getText());
                }*/
    
            }
    
            public static void main(String[] args) {
                // TODO Auto-generated method stub
                downloaddemo d  = new downloaddemo();
                d.getTextU();
                d.invokeBrowser();
            }
    
        }
    
    import java.util.*;
    导入java.util.concurrent.TimeUnit;
    导入org.openqa.selenium.By;
    导入org.openqa.selenium.WebDriver;
    导入org.openqa.selenium.WebElement;
    导入org.openqa.selenium.firefox.FirefoxDriver;
    公共类下载演示{
    字符串文本;
    字符串text1;
    网络驱动程序;
    void getTextU()
    {
    扫描仪s=新的扫描仪(System.in);
    System.out.println(“输入文本”);
    text=s.nextLine();
    text1=text+“pdf”;
    System.out.println(“搜索“+text1+”);
    }
    public void invokeBrowser()
    {
    System.setProperty(“webdriver.gecko.driver”,“C:\\geckodriver-v0.19.0-win64\\geckodriver.exe”);
    驱动程序=新的FirefoxDriver();
    driver.manage().deleteAllCookies();
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    driver.manage().timeout().pageLoadTimeout(30,TimeUnit.SECONDS);
    驱动程序。获取(“https://www.google.com");
    搜索();
    }
    公开无效搜索()
    {
    findElement(By.xpath(//input[@id='lst-ib'和@class='gsfi'])。单击();
    System.out.println(text1);
    driver.findElement(By.id(“lst ib”)).sendKeys(text1);
    试一试{
    《睡眠》(2000年);
    }捕捉(中断异常e){
    //TODO自动生成的捕捉块
    e、 printStackTrace();
    }
    findElement(By.xpath(//input[@value='Google Search'或@aria label='Google Search'])。单击();
    //driver.findElement(By.xpath(//span[@class=''u ogd b w xsm']和//a[@href=''))。单击();
    /*List List=driver.findelelements(By.xpath(“//span[@class='''u ogd b w xsm']//a[@href]”);
    for(WebElement e:list){
    字符串链接=e.getAttribute(“href”);
    System.out.println(e.getTagName()+“=”+link+”,“+e.getText());
    }*/
    }
    公共静态void main(字符串[]args){
    //TODO自动生成的方法存根
    downloaddemo d=新的downloaddemo();
    d、 getTextU();
    d、 invokeBrowser();
    }
    }
    
    其输出如下所示:

    • [pdf]Java完整参考资料,第七版
    • [pdf]Java- 甲骨文
    • [pdf]java-Ramesh R.Manza博士
    问题是如何加载任何一个pdf链接,问题是每个锚标记都有不同的href值


    我怎样才能下载所有的pdf

    使用此代码,我获取所有pdf链接

        public class testing_solution
        {
               public static WebDriver driver;
    
                public static void main(String[] args) throws InterruptedException {
                        driver =new ChromeDriver();
                        driver.get("https://www.google.com/search?q=selenium+pdf&rlz=1C1CHZL_enBD739BD739&oq=selenium+pdf&aqs=chrome..69i57j69i60l2j0l3.3815j0j7&sourceid=chrome&ie=UTF-8");
                        List<WebElement> list = driver.findElements(By.xpath(".//*[@class='f kv _SWb']/cite"));
    
                 for (WebElement e : list) {
                     if(e.getText().endsWith(".pdf")){
    
                         System.out.println(e.getText());
                     }
    
            }}
    
    公共类测试\u解决方案
    {
    公共静态WebDriver;
    公共静态void main(字符串[]args)引发InterruptedException{
    驱动程序=新的ChromeDriver();
    驱动程序。获取(“https://www.google.com/search?q=selenium+pdf&rlz=1C1CHZL_enBD739BD739&oq=selenium+pdf&aqs=chrome..69i57j69i60l2j0l3.3815j0j7&sourceid=chrome&ie=UTF-8”);
    List List=driver.findElements(By.xpath(“./*[@class='f kv_SWb']/cite”);
    for(WebElement e:list){
    if(e.getText().endsWith(“.pdf”)){
    System.out.println(e.getText());
    }
    }}
    
    首先,我采取的链接,然后检查链接是否是pdf格式,然后我打印所有的链接

    我得到如下输出


    希望它能帮助您……

    而不是查找
    href
    属性搜索
    数据href
    属性,这是pdf的实际链接。我了解如何获取链接,但如何下载所有pdf