是否内置select器选项以使用nightwatchjs进行复杂的决策?

使用名为NightWatch的JavaScript Selenium工具,在应用testing之前确定GUI部分的好习惯是什么? 例如,如果在A或B上发现,然后进行单独的testing。 另一个例子,确定是否login,所以你不会保持login等。似乎当我使用if语句与select器,它想要失败,如果我得到else选项。

我已经使用Python API很长一段时间了,你可以访问所有的Python库,你可以使用Selenium Selectors进行validation,而不会导致错误等。我甚至使用npm Selenium API的结果类似,但仍然是绿色的到它如何工作,但我不能让NightWatch的层做其他事情,但不pipe我尝试什么,E2E通过或失败。

我想我会把它放在那里,所以我可以看到,如果我只是做错了,或者这是一个普遍的问题。 或者,也许还有其他库旨在帮助我正在寻找。 任何投入将不胜感激。

这里是一个Python中的通用示例,我可以用它来validationA / 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() 

这里显然需要更多的逻辑,因为它没有夜间所有的内置插件,但是这应该让我知道我正在尝试做什么。

您可以在Nightwatch.js中使用条件语句,但由于编程是asynchronous的,因此需要将其放在callback函数中。 下面是一个例子,点击链接并根据元素的存在声明标题:

 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();