浏览代码

WebContent: Wait for same-URL WebDriver navigations to complete

The spec says we don't need to await navigations if we navigate to the
same URL that we are already on, but at least in our implementation, we
should still await the page load. Otherwise, we will invoke WebDriver
endpoints on the wrong page.
Timothy Flynn 9 月之前
父节点
当前提交
13fe3477ab
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      Userland/Services/WebContent/WebDriverConnection.cpp

+ 4 - 1
Userland/Services/WebContent/WebDriverConnection.cpp

@@ -276,7 +276,10 @@ Messages::WebDriverClient::NavigateToResponse WebDriverConnection::navigate_to(J
     current_top_level_browsing_context()->page().load(url);
     current_top_level_browsing_context()->page().load(url);
 
 
     // 8. If url is special except for file and current URL and URL do not have the same absolute URL:
     // 8. If url is special except for file and current URL and URL do not have the same absolute URL:
-    if (url.is_special() && url.scheme() != "file"sv && current_url != url) {
+    // AD-HOC: We wait for the navigation to complete regardless of whether the current URL differs from the provided
+    //         URL. Even if they're the same, the navigation queues a tasks that we must await, otherwise subsequent
+    //         endpoint invocations will attempt to operate on the wrong page.
+    if (url.is_special() && url.scheme() != "file"sv) {
         // a. Try to wait for navigation to complete.
         // a. Try to wait for navigation to complete.
         TRY(wait_for_navigation_to_complete());
         TRY(wait_for_navigation_to_complete());