1

使用名爲NightWatch的JavaScript Selenium工具,在應用測試之前確定GUI部件的好習慣是什麼?例如查找是否在A或B上,然後進行單獨的測試。另一個例子,確定是否登錄,所以你不會登錄等。似乎當我使用if語句選擇器,它想要失敗,如果我得到else選項。是否內置選擇器選項以使用nightwatchjs進行復雜決策?

我已經使用了Python API很長一段時間,並且您可以訪問所有Python庫,您可以使用Selenium Selectors進行驗證,而不會導致錯誤等。我甚至使用了npm Selenium API和類似的結果,儘管它仍然是綠色的,但它的工作原理仍然是綠色的,但是我無法讓NightWatch的層做其他事情,但是無論我嘗試什麼,E2E都會通過或失敗。

我想我會把它放在那裏,所以我可以看到,如果我只是做錯了,或者如果這是一個普遍的問題。或者,也許還有其他庫旨在幫助我尋找。任何投入將不勝感激。

這裏是用Python通用的例子,我可能會使用驗證工作的A/B選項...

# so you know what EC is 
from selenium.webdriver.support import expected_conditions as EC 

... 

try: 
    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#foo'))) 
    driver.find_element_by_css_selector('#blah1 a').click() 
except: 
    driver.find_element_by_css_selector('#blah2 a').click() 

而另一個也許更乾淨外觀的方式做到這一點在Python ...

if len(driver.find_elements_by_css_selector('#blah1 a')) > 0: 
    driver.find_element_by_css_selector('#blah1 a').click() 
else: 
    driver.find_element_by_css_selector('#blah2 a').click() 

這裏顯然需要更多的邏輯,因爲它沒有所有夜視功能的內置插件,但是這應該讓我知道我正在嘗試做什麼。

+1

可以爲用戶提供顯示,你無法與nightwatchjs複製行爲的JS或Python API的例子嗎? –

+0

@FlorentB。我剛剛提供了一個非常通用的嘗試異常黑客使用Python來完成這一點。這基本上就是這裏的目標,而不是看你是否可以訪問其中的一個,但是確定你可以使用哪個選項並使用它。然後從這一點做出你的斷言。 – Shane

回答

1

您可以在Nightwatch.js中使用條件語句,但它需要放在回調中,因爲編程是異步的。 下面是一個例子,點擊一個鏈接,並斷言標題取決於元素的存在:

client 
    .url('http://stackoverflow.com/') 
    .elements('css selector', '#abcd', function(result) { 
     if (result.value.length) { // if element is present 
      client.click('#nav-questions'); 
      client.assert.title("Newest Questions - Stack Overflow"); 
     } else { 
      client.click('#nav-askquestion'); 
      client.assert.title("Ask a Question - Stack Overflow"); 
     } 
    }) 
    .end(); 
相關問題