使用名为 NightWatch 的 JavaScript Selenium 工具,在应用测试之前确定 GUI 部分的良好做法是什么?例如,查找 A 或 B 上的情况,然后进行单独的测试。另一个例子,确定是否已登录,这样你就不会继续登录等。似乎当我将 if
语句与选择器一起使用时,如果我得到 else
,它就会失败选项。
我已经使用Python API很长时间了,你可以访问所有Python库,你可以使用Selenium选择器来验证,不会导致错误等。我什至使用过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()
这里显然需要更多的逻辑,因为它没有夜巡所具有的所有内置功能,但这应该让我知道我正在尝试做什么。
最佳答案
您可以在 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();
关于javascript - 是否内置选择器选项以使用 nightwatchjs 做出复杂的决策?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37402386/