Pega Web サイト ページのページを自動化するために RFT を使用しています。ただし、オートメーションは、テキストの文字列を挿入している入力の変更イベントを発生させることができないようです。この入力ボックスはiframe内にあるようですが、おそらくこれが、その入力ボックスにフォーカスを失ったときに onchange イベントを発生させない理由ですか?
RFT は、プログラムでSeleniumを使用して Web ページと対話します。
入力ボックスのhtml:
<input
data-id="204083727717650"
data-ctl="["TextInput"]"
id="BBOX"
maxlength="15"
validationtype="required"
value=""
name="$PpyWorkPage$pBBOX$pBBOX"
class="leftJustifyStyle"
data-change="[["refresh",
["otherSection",
"RecordInformation",
"",
"&=",
"",
"BBOXOnChange,",
":event",
"",
"pyWorkPage.BBOX"
]
]]"
type="text">
私が試したSeleniumコードは次のとおりです。
driver.switchTo().frame(driver.findElement(By.name("PegaGadget")));
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("BBOX")));
final WebElement BBOXInputBox = driver.findElement(By.id("BBOX"));
BBOXInputBox.click();
BBOXInputBox.click();
Thread.sleep(2000);
BBOXInputBox.sendKeys("204083727717650");
Thread.sleep(2000);
BBOXInputBox.sendKeys(Keys.TAB);
Thread.sleep(2000);
BBOXInputBox.sendKeys(Keys.BACK_SPACE);
Thread.sleep(2000);
BBOXInputBox.sendKeys("1");
Thread.sleep(200);
BBOXInputBox.sendKeys(Keys.TAB);
Thread.sleep(2000);
Actions builder = new Actions(driver);
builder.moveToElement(driver.findElement(By.id("FirstName_U")), 5, 5).click().build().perform();
driver.findElement(By.id("FirstName_U")).sendKeys("something");
そして、1 つのページの 30 ほどの .js ファイルで上記の関数を見つけるために最善を尽くしています。
したがって、JS でのこのタイプのコーディングの分野で私よりも知識のある人が設定し、コード内でこの変更イベントを手動で起動できるように、.js ソース コードで何を探すべきかを教えてください。
テキスト ボックスをクリックし、いくつかの文字を入力してから、同じフォームの別の入力ボックスをタブまたはクリックすると、ページにラベルを設定する何らかのタイプのイベント/関数が起動するようです。
私が .js ソース コード内で探していたのは、refresh(...)という関数か、 refresh: function(...)...または_refresh: function(...)の行に沿ったものです。 ..しかし、その関数に送信するパラメーターに似たものを見つけることができませんでした。