亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

編碼的 UI - C# - ExecuteScript - 計數未正確返回值

編碼的 UI - C# - ExecuteScript - 計數未正確返回值

C#
DIEA 2021-07-30 22:05:20
我在 Coded UI 中使用 ExecuteScript 觀察到一個奇怪的行為。當兩個數字彼此相鄰時,count 不會返回正確的值。我不確定為什么會這樣。這是代碼片段:static long nowYearQA = 2030;static long pastYearQA = 2029;BrowserWindow window = new BrowserWindow();window.WaitForControlEnabled();long countCurrentYearQA = (long)window.ExecuteScript("count = 0; if(document.body.innerHTML.toString().indexOf('" + nowYearQA.ToString().Trim() + "')  > -1){count = 1;} return count;");long countPastYearQA = (long)window.ExecuteScript("count = 0; if(document.body.innerHTML.toString().indexOf('" + pastYearQA.ToString().Trim() + "')  > -1){count = 1;} return count;");MessageBox.Show(countCurrentYearQA + " " + countPastYearQA);這是用于頁面驗證,我正在檢查頁面的內部文本中是否存在某些數字。如果數字存在,則返回 1,如果數字不存在,則返回 0。 ExecutionScript 代碼來自以下討論:https : //forums.asp.net/t/1945825.aspx? javascript+check+if +a+string+exists+on+page對于我測試的內部網站,如果數字之間的差異至少為2,則count返回正確的值,但當差異大于2時返回錯誤。對于我使用https://www.google.com的測試- 對于此站點,數字之間的差異需要為 3 才能獲得正確的值。例如,如果 nowYearQA = 2030 和 pastYearQA = 2029,或 pastYearQA = 2028,則 countCurrentYearQA 為 0,countPastYearQA 為 1 - 這是不正確的結果。當 nowYearQA = 2030 和 pastYearQA = 2027 時,countCurrentYearQA 為 0,countPastYearQA 為 0 - 這是正確的結果。有什么我在這里俯瞰的嗎?為什么會有這種差異?我從這篇文章中了解到“ExecuteScript API 不支持 Int,只支持 long”——這就是我在代碼片段中長期轉換變量的原因。
查看完整描述

1 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

您當前方法的問題在于您在整個標記源中搜索可能出現在某處的四位數字字符串。

我建議改進三點:

  1. 在innerText 中搜索,而不是在innerHTML 中搜索。這樣,作為腳本等不可見標簽的一部分的數字被排除在外

  2. 專門針對包含年份數字的標簽。檢查標記以找到選擇器的適當條件,例如 id 值:

    document.getElementByID('yearspan').innerText

  3. 僅搜索整個單詞,而不是使用indexOf函數搜索。


查看完整回答
反對 回復 2021-07-31
  • 1 回答
  • 0 關注
  • 173 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號