java
  • javascript
  • firefox
  • selenium
  • selenium-webdriver
  • 2014-11-21 19 views 0 likes 
    0

    我正在使用運行Javascript的頁面源來打印頁面上的文本。這是我講的源代碼片段:使用Selenium WebDriver從Javascript源提取變量

    var display_session = get_cookie("LastMRH_Session"); 
    if(null != display_session) { 
        document.getElementById("sessionDIV").innerHTML = '<BR>The session reference number: &nbsp;' + display_session + '<BR><BR>'; 
        document.getElementById("sessionDIV").style.visibility = "visible"; 
    } 
    

    該頁面顯示display session變量的值時,它不是空,但我想知道是否有一種方法,我可以利用這個變量我的Selenium WebDriver代碼。在Javascript中使用此代碼的函數不返回display_session變量,我無法更改頁面源代碼。我試着基於帖子here,但它引發了一個異常。

    JavascriptExecutor js = (JavascriptExecutor) driverRp; 
    Object result = js.executeScript("return display_session"); 
    System.out.println("sessionId = "+result); 
    

    有什麼建議嗎?

    +0

    拋出的異常是什麼? – Richard 2014-11-21 18:20:27

    +0

    @Richard org.openqa.selenium.WebDriverException:未知錯誤:display_session未定義 – user2150250 2014-11-21 18:35:06

    +0

    看起來像'display_session'爲'null'的情況?或者是'js.executeScript'行引發的異常? – Richard 2014-11-21 19:49:31

    回答

    1

    想通了。需要追蹤cookie本身,而不是搞亂Javascript變量。

    Cookie cookie = driverRp.manage().getCookieNamed("LastMRH_Session"); 
    String sessionId = cookie.getValue().toUpperCase(); 
    System.out.println("sessionId = "+sessionId); 
    

    在此post處找到解決方案。

    0

    試試這個:

    js.executeScript('return get_cookie("LastMRH_Session")') 
    
    +0

    Eclipse給我一個錯誤「無效的字符常量」,用於該行代碼。 – user2150250 2014-11-21 20:08:29

    +0

    儘管此代碼片段可能會解決問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – gunr2171 2014-11-21 20:16:41

    1

    如果display_session變量位於某個函數內部,那麼除非它處於全局範圍內,否則將無法訪問該變量。

    如果您的目的是要讀取cookie的值,您可以使用driver.manage().getCookieNamed(...)作爲執行Javascript的替代方法。

    編輯:

    剛纔看到你能找出相同。我發佈時沒有看到您的答案。很高興它解決了。

    +0

    不用擔心,只是勉強打敗你。非常感謝您的幫助。 – user2150250 2014-11-21 21:35:12

    相關問題