endWhile не работает, не может начать без редактирования индекса в то время как - PullRequest
0 голосов
/ 08 января 2019

Я использую расширение Katalon Recorder для Chrome,

Мой код работает каким-то странным образом, чтобы начать тест сначала, я должен просто отредактировать (даже щелкнуть и добавить / удалить пробел) шаг с циклом start while. Во-вторых, после endWhile тест не останавливается, а продолжается с нулевым значением в переменной. Любые предположения, что не так (это может быть глупый вопрос, так как я довольно нов в использовании).

Это для проверки на сайте списка некоторых доменов, которые не должны быть приемлемы для поля электронной почты.

import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.checkpoint.CheckpointFactory as CheckpointFactory
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as MobileBuiltInKeywords
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testcase.TestCaseFactory as TestCaseFactory
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testdata.TestDataFactory as TestDataFactory
import com.kms.katalon.core.testobject.ObjectRepository as ObjectRepository
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WSBuiltInKeywords
import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUiBuiltInKeywords
import internal.GlobalVariable as GlobalVariable
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS

import com.thoughtworks.selenium.Selenium
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.WebDriver
import com.thoughtworks.selenium.webdriven.WebDriverBackedSelenium
import static org.junit.Assert.*
import java.util.regex.Pattern
import static org.apache.commons.lang3.StringUtils.join

WebUI.openBrowser('https://www.katalon.com/')
def driver = DriverFactory.getWebDriver()
String baseUrl = "https://www.katalon.com/"
selenium = new WebDriverBackedSelenium(driver, baseUrl)
String  = selenium.getEval("index=0")
selenium.open("https://someportal/#/login")
selenium.click("link=Sign up")
String domainList = selenium.getEval("['0-mail.com','027168.com','0815.su','0sg.net','10mail.org','10minutemail.co.za','11mail.com','123.com','123box.net','123india.com','123mail.cl','123mail.org','123qwe.co.uk','126.com','139.com','150mail.com','150ml.com','15meg4free.com','163.com','16mail.com','188.com','189.cn','1ce.us','1chuan.com','1coolplace.com','1freeemail.com','1funplace.com','1internetdrive.com','1mail.ml','1mail.net','1me.net','1mum.com','1musicrow.com', and many many more domains in this array...']")

selenium.click("id=email")
selenium.while("(index=0, index <= storedVars['domainList'].length)")
String temp = selenium.getEval("index+1")
String finalCount = selenium.getEval("temp")
System.out.println(selenium.getEval("'" + domainList + "'['" + temp + "']"));
String forbiddenMail = selenium.getEval("domainList[index++]")
selenium.type("id=email", "kamtest@" + forbiddenMail)
selenium.click("id=password")
selenium.type("id=password", "ZAQ!2wsx")
selenium.click("id=confirmpassword")
selenium.type("id=confirmpassword", "ZAQ!2wsx")
selenium.click("xpath=(.//*[normalize-space(text()) and normalize-space(.)='mail_outline'])[1]/preceding::h2[1]")
verifyEquals("Please enter your business email address. This form does not accept addresses from free email domains", selenium.getText("xpath=(.//*[normalize-space(text()) and normalize-space(.)='Email Address'])[1]/following::small[2]"));
selenium.click("name=tc")
selenium.click("name=submit")
selenium.click("xpath=(.//*[normalize-space(text()) and normalize-space(.)='mail_outline'])[1]/preceding::h2[1]")
verifyEquals("Please enter your business email address. This form does not accept addresses from free email domains", selenium.getText("xpath=(.//*[normalize-space(text()) and normalize-space(.)='Email Address'])[1]/following::small[2]"));
selenium.open("https://someportal.com/#/login")
selenium.click("link=Sign up")
selenium.endWhile()

После того, как все домены проверены (более 4700), тест продолжается с нулевым значением вместо остановки теста. Тест не может быть запущен без редактирования, пока (index), получен первый результат, index не определен.

1 Ответ

0 голосов
/ 04 февраля 2019

Проблема с вашим условием

Вы должны использовать < вместо <=

selenium.while("(index=0, index < storedVars['domainList'].length)")

length возвращает количество элементов в массиве, но так как индексирование начинается с нуля, индекс последнего элемента будет иметь длину - 1

...