簡體   English   中英

如果它調用Selenium中的Java腳本函數,如何從Web元素獲取文件URL

[英]How can i get the file URL from web element if it calls java script function in Selenium

我有一些測試用例來驗證使用selenium的下載文件。在那里,我可以自動處理瀏覽器彈出窗口並提供要下載文件的默認路徑。

在Chrome中自動處理下載彈出窗口

ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_settings.popups", 0);
prefs.put("download.default_directory","/downloadpath/");
options.setExperimentalOption("prefs", prefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);

這在我的本地機器上可以正常工作,但是由於上述代碼段的一些限制,所以在selenium網格中不起作用。作為解決方案,我模仿了瀏覽器cookie狀態並抓取文件URL並以編程方式將文件寫入本地位置,如本例所示 。在這種方法上有一些問題。 因為它要求Web元素包含一個href屬性才能找到下載文件的URL。在mycase中,它將在單擊按鈕時調用Java腳本函數以生成文件URL。

HTML代碼段

<input type="button" onclick="javascript:downloadFile()" value="Download">.//does not contains href

Js代碼段

<SCRIPT language="javascript">   
    function downloadFile() {
       var fileType = document.form.fileType.options[document.form.fileType.selectedIndex].value;
          var boType = "TransportManifest"
             if(fileType == null || fileType == "") {
                window.alert('Please select a file type');
            } else {
                 var format = fileType.substring(0, fileType.indexOf("~~"));
                 var link = "/local/dynamic1234." + format + "?key="+154220756+"&producer=ExportMediaProducer"; // i need to access this generated URL
                 link = link + "&fileType=" + fileType + "&type=" + boType;
                document.location=link;                    
                }
                 } 
      </SCRIPT>

請讓我知道如何獲取文件URL以編程方式下載文件。是否有任何瀏覽器偵聽器觸發按鈕單擊並獲取文件URL?

當您單擊元素時,假設要使用href創建新框架,則需要在單擊后嘗試檢查元素。

如果沒有幫助下載FIDDLER

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM