From 049d3bd3feea7b8f737c776697912310cf27c80c Mon Sep 17 00:00:00 2001 From: umeow0716 Date: Wed, 24 Jul 2024 04:26:12 +0800 Subject: [PATCH 1/2] Fix bug of get the title element in site QryScore.jsp --- lib/src/connector/score_connector.dart | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/src/connector/score_connector.dart b/lib/src/connector/score_connector.dart index 86136197..91cd8dc3 100644 --- a/lib/src/connector/score_connector.dart +++ b/lib/src/connector/score_connector.dart @@ -103,18 +103,24 @@ class ScoreConnector { } tagNode = parse(result); - final h3Nodes = tagNode.getElementsByTagName("h3"); + final titleNodes = tagNode.querySelectorAll("input[type=submit]"); + //依照學期取得課程資料 - for (final h3Node in h3Nodes) { - final siblingOfH3 = h3Node.nextElementSibling; - if (siblingOfH3 == null || siblingOfH3.localName != "table") continue; - final tableNode = siblingOfH3; + for (final titleNode in titleNodes) { + final siblingOfTitle = titleNode.parent.localName == "form" ? + titleNode.parent.nextElementSibling : // 當成績單已發布 父元素為form 父元素的旁邊元素才是 分數table + titleNode.nextElementSibling ; // 當成績單未發布 父元素為body 原元素旁邊元素就會是 分數table + + if (siblingOfTitle == null || siblingOfTitle.localName != "table") continue; + final tableNode = siblingOfTitle; SemesterCourseScoreJson courseScore = SemesterCourseScoreJson(); SemesterJson semester = SemesterJson(); - semester.year = h3Node.text.split(" ")[0]; - semester.semester = h3Node.text.split(" ")[3]; + + String semesterText = titleNode.attributes["value"]; + semester.year = semesterText.split(" ")[0]; + semester.semester = semesterText.split(" ")[3]; courseScore.semester = semester; //取得課程名稱與分數 scoreNodes = tableNode.getElementsByTagName("tr"); @@ -209,6 +215,7 @@ class ScoreConnector { } } } + return courseScoreList; } catch (e, stack) { Log.eWithStack(e.toString(), stack); From 902825ffb9b068e3646148f38a5b80aa2e5832ab Mon Sep 17 00:00:00 2001 From: James-Lu-none Date: Wed, 24 Jul 2024 11:27:18 +0800 Subject: [PATCH 2/2] dart format --- lib/src/connector/score_connector.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/src/connector/score_connector.dart b/lib/src/connector/score_connector.dart index 91cd8dc3..6c25c5a1 100644 --- a/lib/src/connector/score_connector.dart +++ b/lib/src/connector/score_connector.dart @@ -104,12 +104,13 @@ class ScoreConnector { tagNode = parse(result); final titleNodes = tagNode.querySelectorAll("input[type=submit]"); - + //依照學期取得課程資料 for (final titleNode in titleNodes) { - final siblingOfTitle = titleNode.parent.localName == "form" ? - titleNode.parent.nextElementSibling : // 當成績單已發布 父元素為form 父元素的旁邊元素才是 分數table - titleNode.nextElementSibling ; // 當成績單未發布 父元素為body 原元素旁邊元素就會是 分數table + final siblingOfTitle = titleNode.parent.localName == "form" + ? titleNode.parent.nextElementSibling + : // 當成績單已發布 父元素為form 父元素的旁邊元素才是 分數table + titleNode.nextElementSibling; // 當成績單未發布 父元素為body 原元素旁邊元素就會是 分數table if (siblingOfTitle == null || siblingOfTitle.localName != "table") continue; final tableNode = siblingOfTitle;