有没有办法在selenium webdriver

时间:2017-01-25 06:04:04

标签: java selenium selenium-webdriver selenium-chromedriver

我正在尝试在html文档中嵌入pdf。 https://pdfobject.com/static.html这是参考网站。

使用<embed>

上的HTML标记嵌入了pdf文档

我有以下事项 -

  1. 如果我打开Chrome浏览器(我正在使用Version 55.0.2883.87 m)并检查该<embed>标记上的元素或点击F12然后检查它显示标签内容为 -

    <embed src="chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/content/web/viewer.html?file=https%3A%2F%2Fpdfobject.com%2Fpdf%2Fsample-3pp.pdf#page=2" type="text/html" width="100%" height="100%">
    
  2. 但是如果我使用以下脚本来获取embed标签html

    System.setProperty("webdriver.chrome.driver", "D:\\Application\\chromedriver.exe");
    driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("https://pdfobject.com/static.html");
    driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
    driver.switchTo().frame(1);     
    String tagdata = driver.findElement(By.id("plugin")).getAttribute("outerHTML");     
    System.out.println(tagdata);
    

    将结果检索为 -

    <embed width="100%" height="100%" name="plugin" id="plugin" src="https://pdfobject.com/pdf/sample-3pp.pdf#page=2" type="application/pdf" internalinstanceid="9">
    
  3. 但在chrome chromedriver.exe打开F12如果我执行embed并检查嵌入,则显示与上述结果相同但如果我右键单击该inspect element标记,然后点击<embed>,它会打开新的开发人员工具控制台,我会在其中看到<embed id="plugin" type="application/x-google-chrome-pdf" src="https://pdfobject.com/pdf/sample-3pp.pdf#page=2" stream-url="blob:chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/e8337a7a-5af1-456c-8f7a-d8132c67fe6d" headers="Accept-Ranges: bytes Cache-Control: max-age=2592000 Content-Length: 49672 Content-Type: application/pdf Date: Wed, 25 Jan 2017 04:51:36 GMT Expires: Fri, 24 Feb 2017 04:51:36 GMT Last-Modified: Sat, 19 Mar 2016 06:18:44 GMT MS-Author-Via: DAV Server: Apache X-Content-Type-Options: nosniff " background-color="0xFF525659" top-toolbar-height="56" top-level-url="https://pdfobject.com/static.html"> 标记为 -

    chrome

    同样的快照是 -

    enter image description here

    我在这里有几个问题 -

    1. 使用已安装的系统chromedriver.exechrome打开embedded来执行检查元素的变体?

    2. 有没有办法让chromedriver打开结果?

    3. 有没有办法获得 declare @String varchar(20)='Foo!.,-Bar' select substring(@String,charindex('F', @String),3) html?

1 个答案:

答案 0 :(得分:0)

如果您手动运行Chrome,您似乎安装了PDF Viewer Chrome extension来进行PDF渲染。但是,如果Chrome是由chromedriver启动的,则它会在没有任何浏览器扩展的情况下运行,这就是为什么在这种情况下您会获得Chrome的默认行为(即自行呈现PDF)。

如果您确实需要验证PDF是否已使用该特定扩展程序加载和呈现,那么当Chrome由chromedriver启动时,您可以使用以下方法加载扩展程序(代码取自here):

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

请参阅此处了解如何获取扩展程序的crx文件:Location of CRX in chrome after installation?