Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


9 questions online user: 65

0
votes
answers
43 views
+10

通過點擊按鈕刪除Cookie - 網絡擴展程序API

1

我首次使用Firefox Web擴展API。我想通過點擊一個按鈕來刪除example.com的所有cookies。我有以下代碼,但沒有得到任何結果。通過點擊按鈕刪除Cookie - 網絡擴展程序API

background.js

function onRemoved(cookie) { 
    console.log(`Removed: ${cookie}`); 
} 

function onError(error) { 
    console.log(`Error removing cookie: ${error}`); 
} 

function removeCookie() { 
    var removing = browser.cookies.remove({ 
    url: "example.com" 
    }); 
    removing.then(onRemoved, onError); 
} 

browser.browserAction.onClicked.addListener(removeCookie); 

的manifest.json

{ 

"description": "RemoveCookie", 
"manifest_version": 2, 
"name": "remove-cookies", 
"version": "1.0", 
"icons": { 
"48": "icons/icon.png" 
}, 

"background": { 
"scripts": ["background.js"] 
}, 

"browser_action": { 
    "default_icon": "icons/icon.png", 
    "default_title": "Remove Cookie!" 
}, 

"permissions": [ 
"*://*.example.com/*", 
"cookies" 
] 
} 
沙发
0
0

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/cookies/remove

餅乾API的remove()方法刪除一個cookie,它的名字和網址。

這意味着您還需要指定name參數。

此外,url參數必須包含該協議或承諾將只與null(意思是不能找到cookie)解決。

如果無法找到與詳細信息參數匹配的cookie,則承諾將使用null實現。


話雖這麼說,你可以用browser.cookies.getAll以獲取給定的URL所有的餅乾,然後刪除每個cookie它的名字:

function onRemoved(cookies) { 
    console.log('Removed', cookies); 
} 

function onError(error) { 
    console.log(`Error removing cookie: ${error}`); 
} 

function removeCookie() { 
    var url = "http://example.com"; // NOTE the full url including protocol 
    browser.cookies.getAll({ url: url }) 
    .then(function(cookies) { 
    return Promise.all(cookies.map(function(cookie) { 
     return browser.cookies.remove({ url: url, name: cookie.name }); 
    })); 
    }) 
    .then(onRemoved, onError); 
} 

browser.browserAction.onClicked.addListener(removeCookie); 
+0

THX該解決方案! – HeScm

+0

@HeScm太棒了!考慮接受答案,如果它適合你 – Maluen

0
votes
answers
51 views
+10

xhr調用Firefox WebExtension匹配內容腳本

0

我從來沒有嘗試過創建WebExtensions。我正在嘗試爲一個網站創建一個助手。我將內容腳本映射到適當的頁面上,但網站只使用異步調用在頁面之間導航。在ff的控制檯中,我看到所有呼叫都標記爲xhr。所以我的腳本只能在手動重新加載特定頁面時調用,而不能在導航時調用。xhr調用Firefox WebExtension匹配內容腳本

是否可以映射xhr調用和內容腳本? 我應該使用一種攔截器來做到這一點嗎?有沒有解決這個問題的最佳做法?

沙发
0
0

我就出來了最好的解決辦法是在明顯擴大內容腳本的知名度整個的網站,並在腳本中不斷地檢查路徑:

var enabledPages = [ 
    "/page1", 
    "/page2" 
]; 
setInterval(function() { 
    if(enabledPages.indexOf(window.location.pathname) > -1){ 
     // logic 
    } 
}, 1000); 
0
votes
answers
48 views
+10

Angular5沒有響應與路由器鏈接和按鈕在IE和火狐

0

我有一個新的Angular 5 CLI應用程序,並已爲應用程序的頂部部分構建了navmenu組件。當我在Edge和Chrome中點擊我的菜單項時,它完美地工作,並遵循app.module.ts中定義的路線。但是,當我點擊IE11或Firefox中的鏈接沒有任何反應。我去了並啓用了polyfills.ts中列出的所有polyfills,但仍然沒有改變,儘管他們確實解決了在IE11中渲染材質圖標的問題。Angular5沒有響應與路由器鏈接和按鈕在IE和火狐

<span *ngIf="isLoggedIn() == false"> 
     <button [routerLinkActive]="['link-active']" mat-icon-button > 
     <a [routerLink]="['/login']"> 
      <mat-icon>account_circle</mat-icon> Login 
     </a> 

     </button> 
    <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> 
    </span> 

如果我參加了

 <a [routerLink]="['/login']"> 
      <mat-icon>account_circle</mat-icon> Login 
     </a> 

一部分出來按鈕節點,我可以正確地點擊它,它航線IE11和Firefox,所以我的路線是好的。不知怎的,激活錨點在IE11和Firefox中不起作用。有沒有人知道這可能是什麼? Edge和Chrome完美工作。

沙发
0
3

對此的回答其實很簡單。實際上不需要

的<按鈕>標籤和氈圖標按鈕樣式可以被施加到一個<標籤>

<a [routerLink]="['/login']" [routerLinkActive]="['link-active']" mat-icon-button> 
     <mat-icon>account_circle</mat-icon> Login 
    </a> 

即達到所希望的結果。我發現這個按鈕遮住了IE和Firefox的錨點。當我把一個測試

onclick="this.children[0].children[0].click()" 

按鈕上的路線在Firefox和IE瀏覽器而導致我的回答該消息沒有得到,雖然在那些兩個瀏覽器錨的工作。

0
votes
answers
49 views
+10

Chrome WebRequest API:如何屏蔽「Set-Cookies」?

0

我需要阻止來自某個域的所有cookie。 (我不能使用內容設置API,因爲FireFox現在還不支持它)Chrome WebRequest API:如何屏蔽「Set-Cookies」?

我現在沒有很多的成功,我不知道我是否在正確的方向?

function modifyHeaders(headers: HttpHeader[]) { 
    headers.forEach((header: HttpHeader) => { 
     if (header.name === "set-cookie") { 
      /* makeExpire sets "Expires= sometimeInThePast" */ 
      header.value = makeExpire(header.value!) 
     } 
    }) 
} 

modifyHeaders(headers); 
return { responseHeaders: headers } 

這似乎是:

使用WebRequest的API,我添加了一個偵聽器,以

onHeadersReceived 

,並確保我的函數返回一個承諾,我再通過頭部像這樣去最低的開銷方式,但迄今似乎並不奏效。我想我可能會在錯誤的軌道上如何。

+0

您沒有顯示註冊偵聽器的代碼。確保在附加選項中提供'['blocking','responseHeaders']'。附:我不明白爲什麼在這個微不足道的案件中需要承諾。 – wOxxOm

沙发
0
1
function onHeadersReceived(details) { 
    if (details.responseHeaders) { 
     return { 
      responseHeaders: details.responseHeaders.filter((x) => { 
       return x.name.toLowerCase() !== 'set-cookie'; 
      }) 
     }; 
    } 
    return {}; 
} 
browser.webRequest.onHeadersReceived.addListener(onHeadersReceived, { urls: ["<all_urls>"] }, ["responseHeaders", "blocking"]); 
0
votes
answers
45 views
+10

打開帶有批次/ CMD網頁和執行JavaScript

1

我已經有包含此命令的批處理文件:打開帶有批次/ CMD網頁和執行JavaScript

啓動Firefox - 新標籤www.google.de

現在我想此頁面上自動執行js代碼,如:

alert('Hello World!'); 

就像你可以在Firefox的JS控制檯做...

我沒有自己的網站。我想它,使之與其他網站一樣google.de工作...

顯然我使用Firefox和窗口。

在此先感謝!

+0

您可以使用類似的財產以後[Tampermonkey(https://addons.mozilla.org/fr/firefox/addon/tampermonkey/)來運行網頁上的自定義JS。 –

+0

謝謝,工作正常。 – Xeff

沙发
0
1

你有一個HTML頁面?

如果你這樣做,你可以使用HTML來運行的Javascript是這樣的:

<script> 
    alert('Hello World!'); 
</script> 

,並使用批處理文件來運行HTML文件來代替。例如,如果你的HTML頁面在以下位置:file:///C:/Users/user/Desktop/page.html,你會運行以下命令:

start "" "(location of your firefox program)" "file:///C:/Users/user/Desktop/page.html" 

希望它幫助。

+0

不,這不是我想要的。但是,謝謝。 – Xeff

0
votes
answers
41 views
+10

無法找到softAssert失敗後的元素

0

即使其中一個軟斷言失敗,測試也會繼續。 但在我的情況下,我的測試在軟件斷言失敗後停止,因爲找不到下一個測試元素。無法找到softAssert失敗後的元素

softAssert.assertTrue(p.OtsPage.fName().getAttribute("readonly").equals("true"), "field Name is Editable", "field Name is Read Only"); 
softAssert.assertTrue(p.OtsPage.fEditValue().isEnabled(), "field Edit Value is not Editable", "field Edit Value is Editable"); 

這工作正常,但如果我設置:

softAssert.assertFalse(p.OtsPage.fName().getAttribute("readonly").equals("true"), "field Name is Editable", "field Name is Read Only"); 
softAssert.assertFalse(p.OtsPage.fEditValue().isEnabled(), "field Edit Value is not Editable", "field Edit Value is Editable"); 

我有以下錯誤信息:

org.openqa.selenium.NoSuchElementException。 第二次軟斷言!!!

並停止測試。

環境:Selenium 3.5 + geckodriver + Mozilla 56.0.1。

沙发
0
0

這看起來不是一個斷言的問題,因爲正如你所提到的第二行正在運行,但它會拋出異常。你的問題可能在這裏:p.OtsPage.fEditValue().isEnabled()

更確切地說:根據docs,NoSuchElementException拋出WebDriver.findElement(By)

您可能在fEditValue()函數中運行findElement(),您應該在那裏搜索問題。在運行時確保此功能中由選擇器表示的元素確實存在於頁面中。

0
votes
answers
51 views
+10

如何使用通過VPN工作的selenium webdriver訪問應用程序?

1

例如,我有一個應用程序「www.test.com」,訪問此網站我已經在firefox中安裝browsec VPN,然後我可以看到應用程序內容 - 訪問該網站沒有VPN我得到一個錯誤「您的IP地址已被阻止..bla bla「現在我想通過Selenium Webdriver測試該網站的一些UI,但是當我嘗試通過selenium webdriver訪問該網站時,由於vpn已經安裝在Firefox上,我得到了同樣的IP阻塞錯誤,但是webdriver不打擾VPN - 這是我的問題我如何通過Selenium webdriver訪問這些應用程序?如何使用通過VPN工作的selenium webdriver訪問應用程序?

沙发
0
0

您必須使用WebDriver中的Firefox配置文件加載擴展。以擴展文件的路徑通常是在這裏C:UsersadministratorAppDataRoamingMozillaFirefoxProfilesew0u966b.default-1507268891903extensions

WebDriver driver = null; 

FirefoxProfile firefoxProfile = new FirefoxProfile(); 
File addonpath = new File("path of addon/extension (.xpi file)"); 
firefoxProfile.addExtension(addonpath); 

DesiredCapabilities capabilities = DesiredCapabilities.firefox(); 
capabilities.setCapability(FirefoxDriver.PROFILE, profile); 

driver = new FirefoxDriver(capabilities); 

driver.get("http://www.helloselenium.com"); 

driver.quit(); 

http://www.helloselenium.com/2014/09/how-to-add-addon-to-firefox-instance-of.html

鍍鉻見下面的鏈接

http://www.abodeqa.com/2013/08/24/adding-add-on-in-firefox-and-chrome-using-webdriver/

要開始延伸,下面應該工作。

每個擴展名都有一個唯一的id,可用於在瀏覽器中打開擴展名。當你安裝browsec插件時,你將會得到一個像這樣的url來指示這個id。 moz-extension://f1b30486-cd88-4319-bbb5-d5e387103414/congratulations.html我不確定如何以任何其他方式獲取此ID,或者對於不同的安裝它是否會相同。我曾問一個問題在SO爲同 - Get add-on id of extensions in Firefox

更換congratulations.htmlpopup.html應該打開瀏覽器擴展。然後,您可以像對待普通網頁那樣對待它,並使用Selenium WebDriver將其自動化。以這種方式啓動擴展後,您可以加載測試中的應用程序的URL並繼續。

enter image description here

+0

謝謝@Sighil,我可以看到VPN在Firefox例如,通過腳本打開但VPN被禁用 - 我如何可以使使用硒的webdriver呢? –

0
votes
answers
49 views
+10

試圖用一些數據填充textarea

0

我一直在試圖使這個腳本工作,但我只是無法弄清楚它!如果有人能幫助我,我將不勝感激。試圖用一些數據填充textarea

所以我開始解釋:

-I在一個文本文件中的電子郵件地址列表,我知道的iMacros只支持CSV所以我要做的就是:

  1. 在年底每行我用「,」替換「 n」並將其保存爲csv。
  2. 然後我嘗試粘貼25個電子郵件地址。
  3. 它的工作原理,我得到的電子郵件地址,但現在我卡在這裏試圖粘貼下25個地址。 這裏是我做了什麼:

    VERSION BUILD=9030808 RECORDER=FX 
    TAB T=1 
    'TAB CLOSEALLOTHERS 
    SET !DATASOURCE ppl.csv 
    'SET !LOOP 1 
    'SET !DATASOURCE_LINE {{!LOOP}} 
    FRAME F=3 
    TAG POS=1 TYPE=TEXTAREA FORM=ID:addmember ATTR=ID:add-members-textarea CONTENT={{!COL1}}<SP>{{!COL2}}<SP>{{!COL3}}<SP>{{!COL4}}<SP>{{!COL5}}<SP>{{!COL6}}<SP>{{!COL7}}<SP>{{!COL8}}<SP>{{!COL9}}<SP>{{!COL10}}<SP>{{!COL11}}<SP>{{!COL12}}<SP>{{!COL13}}<SP>{{!COL14}}<SP>{{!COL15}}<SP>{{!COL16}}<SP>{{!COL17}}<SP>{{!COL18}}<SP>{{!COL19}}<SP>{{!COL20}}<SP>{{!COL21}}<SP>{{!COL22}}<SP>{{!COL23}}<SP>{{!COL24}}<SP>{{!COL25}} 
    'TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:addmember ATTR=ID:add-members-add-button 
    

所以整個想法是讓25個電子郵件地址,將其添加到數據庫中,然後從26號開始,並添加其他25直到有沒有更多的。

沙发
0
0

//我用javascript代碼與imcaros。可能是這個幫助。

macro += "TAB T=1" + "\n"; 
    macro += "SET !DATASOURCE 39.csv" + "\n"; 
    macro += "SET !DATASOURCE_LINE {{i}}" + "\n"; 
    macro += "ADD !EXTRACT {{!COL1}}"+ "\n"; 



    //here u can stop the macro.js file and start at any value for your use case 



for(var i=1;i<50;i++){ 
    iimSet("i",i); 
    iimPlay(macro); 
    } 
+0

感謝您的幫助! 我一定在做錯事,但是宏不起作用。 我在宏+ =和for循環之間添加了TAG元素,但它不起作用。 – Simo

0
votes
answers
38 views
+10

爲什麼Firefox在Safari中沒有獲得<form> $ _GET變量?

0

我通過表單發送輸入的內容,從第1頁至第2頁,使用按鈕與action="page2.php"

<form method="get" id="chatform" action="page2.php"> 
    <input type="text" style="margin-bottom:20px;" class="form-control" id="recipient" name="recipient" placeholder="username" value=""> 
</form> 

按鈕的形式外,但它包含它的名稱:

<button type="submit" form="chatform" id="b9" style="font-size: 12px !important;" name="b9" class="buttonmenu toggleForms btn btn-secondary btn-block" style="float:left;">Chat</button> 

我也很loadind使用javascript輸入:

$(".buttonmenu").click(function(){ 
$('#recipient').val("hellooooo"); } 

問題是,一切工作正常Safari瀏覽器,但在Firefox我不戈t變量$_GET['recipient']中的任何內容,我不明白爲什麼。

在page1中只有表格串聯,沒有嵌套froms。在Safari中,一切都在第2頁完美運行:我在URL和內容中獲得了'收件人'變量的名稱,在firefox中,我只在URL中獲得'收件人'變量的名稱,但變量爲空 看來就像Firefox無法從服務器獲取$_GET['recipient']的內容,或者運行php操作IGNORING javascript。

有什麼想法?

+0

'動作= 「chat.php」''VS行動= 「使page2.php」'...所以...而且也沒有提交按鈕 –

+0

道歉,它是action =「page2.php」 - 只需在問題 – giuseppe

+0

中糾正它,你如何將表單發送到該頁面? –

沙发
0
0

1)確保您的形式是不是(嵌套)另一種形式的元素,像這樣內部: (也確保它不是內<tr><td>,或<table>元素)

<form> 
    ... 

    <form> 
     ... 
    </form> 

    ... 
</form> 

2)確保你的代碼工作,下面的代碼工作這麼試試這個,看看它是否有差別

page1.php中:

<form action="page2.php" method="GET" id="chatform"> 
 
    <input type="text" style="margin-bottom:20px;" class="form-control" id="recipient" name="recipient" placeholder="username" value=""> 
 
    <input type="submit" name="submit" value="SUBMIT"> 
 
</form>

使page2.php:

$recipient = $_GET['recipient']; 
echo $recipient; 

3)嘗試清除緩存和Cookie。有時候,形式可以打破accordinf這個問題問的Firefox helpc中心:

https://support.mozilla.org/en-US/questions/1144267

本文狀態......

許多網站問題都可以通過腐敗餅乾或高速緩存引起的。

  • 清除緩存
  • 和刪除餅乾

    警告! !這會將您註銷到您登錄的網站之外。 在地址欄中輸入about:preferences。

  • 餅乾;選擇隱私。在歷史記錄下,選擇Firefox將使用自定義 設置。按下右側的按鈕Show Cookies。使用 搜索欄查找該網站。注意;可能有多個 條目。刪除所有這些。

  • Cache;選擇高級>網絡。從緩存的Web內容跨越 ,按立即清除。如果仍存在問題,請以安全模式啓動Firefox {web link}應出現一個小對話框。 單擊在安全模式下啓動(不刷新)。當你處於安全模式時;

在地址欄中輸入about:preferences#進階。

在高級下,選擇常規。查找並關閉使用硬件 加速。

4)請確保該文件的文件是100%正確的!確保它確實是page2.php,也嘗試以斜線的行動,在一開始就像這樣:"/page2.php"

+0

當我在Firefox中運行你的代碼片段時,我得到:服務器錯誤 404 - 找不到文件或目錄。 您正在查找的資源可能已被刪除,變更了名稱或暫時不可用 – giuseppe

+0

是您的文件,實際上是叫做page2.php或僅僅是一個例子? – Jesus

+0

只是一個例子更清晰 – giuseppe

板凳
0
0

解決

火狐需要「事件」對象作爲函數的PARAM。

這是該行:

$(".buttomenu").click(function(event) {.....