2012-11-19 80 views
3

我已經在selenium IDE中做了一些研究和大量工作,我找不到任何這樣做的方法。自定義Selenium Java Junit4 Webdriver導出器

我想要做的是基本上添加額外的支持,並改變一些命令的現有實現,即isTextPresent和addSelection。我基本上可以將WebDriver JUnit導出器的大部分功能放在一邊,因爲它工作正常,但只是想添加一些自定義的方法返回。

比如我想給了出口商的isTextPresent()從此改變:

// Warning: waitForTextPresent may require manual changes 
for (int second = 0;; second++) { 
    if (second >= 60) fail("timeout"); 
    try { if (driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*SOME INTERESTING TEXT[\\s\\S]*$")) break; } catch (Exception e) {} 
      Thread.sleep(1000); 
} 

要這樣:

SeleniumHelperUtil.isTextPresent("SOME INTERESTING TEXT");

這讓我可以用我的定製SeleniumHelperUtil java類,我想我所有的硒測試使用。這是一個大型複雜的工作流程項目,所以我們最終會有數百個測試。我希望我的測試人員構建他們的測試用例,使用WebDriver將它們導出到Java中,並將其導入到JUnit4測試中。然後,他們可以將它們檢入CVS,我們的自動Hudson構建服務器將每晚進行新的測試。我希望這會在我們的開發人員干預最小的情況下發生(現在它真的只有我自動取款機,我沒有時間,直到他們發明了30小時的一天:))。

我已經試過

我試圖做的,從webdriver.js,包括所有選項的代碼剪切和粘貼製作一個自定義的出口國,我已經修改了WAITFOR功能看起來像這樣的:

function waitFor(expression) { 
    return "SeleniumHelperUtil.isTextPresent(" + expression ")"; 
} 

不幸的是我的全部取回是WebDriver.js實現其功能是:

// Warning: waitForTextPresent may require manual changes 
for (int second = 0;; second++) { 
    if (second >= 60) fail("timeout"); 
    try { if (driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*SOME INTERESTING TEXT[\\s\\S]*$")) break; } catch (Exception e) {} 
      Thread.sleep(1000); 
} 

我使用的是Selenium和Firefox 13的1.9.1版本(由於工作限制,我無法完全安裝版本)。

現在我已經在xpi文件中的WebDriver-Junit4.js文件中找到了代碼的一部分,所以我可以修改它並使用我的自定義代碼重新生成插件,但它會很好,只需通過硒因爲我不確定當我在那裏時還有什麼可能會破滅。

+0

現在我已經快速修改了Webdriver-Junit4.js代碼,直到我找到了解決此問題的更好方法。麻煩的是,如果我離開這裏,我會鎖定一個不合意的版本。如果我設法使這些更改具有自主性,我會在這裏添加它們。 – tbone

回答

0
public boolean isTextPresent(WebDriver driver, String textToCheck) 
{ 
    try 
    { 
     org.openqa.selenium.By by = By.xpath("//p[contains(.,'"+textToCheck+"')]")); 
     driver.findElement(by); 
     return true; 
    } 
    catch (NoSuchElementException e) 
    { 
     return false; 
    } 
} 

檢查硒單元測試的結果:使用螢火蟲。

+0

非常感謝。我最終修改了Junit4 Selenium插件以放出SeleniumHelperUtil.isTextPresent(驅動程序,文本);方法簽名,然後我幾乎做了上面的助手類。它在某些方法上運行良好,但我不得不放棄它並轉向其他更緊迫的優先事項。我認爲有2或3種方法仍然可以編寫和修改,但我可能可以將其傳遞給其他人。 – tbone

相關問題