簡體   English   中英

自動化期間無法在網頁上找到元素

[英]Unable to find Element on Web page during Automation

我正在使用Selenium Web驅動程序(2.44)自動化某些網頁,自動化運行期間瀏覽器出現意外錯誤。 請看下圖:

在此處輸入圖片說明

因此,發生這種情況時,我的頁面將掛起,並且框架無法找到當前網頁中的任何元素。 我試圖升級/降級IE驅動程序。

當我雙擊此錯誤符號時,出現以下彈出IE窗口:

在此處輸入圖片說明

打開瀏覽器的保護模式。 在選項的“安全性”選項卡中。 如果這不起作用,請確保每個區域都使用相同的選項(打開或關閉)。 有四個區域(Int​​ranet,Trusted,Internet和Restricted)。

這是一些可以為您(IE)完成的代碼:

// Intranet
private const string REG_KEY_IE_ZONE_1 = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1";
// Trusted
private const string REG_KEY_IE_ZONE_2 = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2";
// Internet
private const string REG_KEY_IE_ZONE_3 = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3";
// Restricted
private const string REG_KEY_IE_ZONE_4 = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4";

public static void SetIESecurityToProtected()
{
    // 3 is off, 0 is on
    try
    {
        // Intranet
        if ((int)Registry.GetValue(REG_KEY_IE_ZONE_1, "2500", -1) == 3)
        {
            Registry.SetValue(REG_KEY_IE_ZONE_1, "2500", 0);
        }

        // Trusted
        if ((int)Registry.GetValue(REG_KEY_IE_ZONE_2, "2500", -1) == 3)
        {
            Registry.SetValue(REG_KEY_IE_ZONE_2, "2500", 0);
        }

        // Internet
        if ((int)Registry.GetValue(REG_KEY_IE_ZONE_3, "2500", -1) == 3)
        {
            Registry.SetValue(REG_KEY_IE_ZONE_3, "2500", 0);
        }

        // Restricted
        if ((int)Registry.GetValue(REG_KEY_IE_ZONE_4, "2500", -1) == 3)
        {
            Registry.SetValue(REG_KEY_IE_ZONE_4, "2500", 0);
        }
    }
    catch (Exception e)
    {
        // handle your exception or record it...
    }
}

這將修改注冊表...所以...通讀代碼,並確保您了解它的作用。 這個對我有用。 我看到不同的人有不同的行為,但這就是我要做的。

這是官方要求披露:

  1. IEDriverServer可執行文件必須下載並放置在PATH中。
  2. 在Windows Vista或Windows 7的IE 7或更高版本上,必須將每個區域的保護模式設置設置為相同的值。 該值可以打開或關閉,只要每個區域都相同即可。 要設置保護模式設置,請從“工具”菜單中選擇“ Internet選項...”,然后單擊“安全性”選項卡。 對於每個區域,選項卡底部都會有一個標記為“啟用保護模式”的復選框。
  3. 此外,對於IE 10及更高版本,必須禁用“增強保護模式”。 該選項位於“ Internet選項”對話框的“高級”選項卡中。
  4. 瀏覽器縮放級別必須設置為100%,以便可以將本機鼠標事件設置為正確的坐標。
  5. 僅對於IE 11,您需要在目標計算機上設置一個注冊表項,以便驅動程序可以維持與其創建的Internet Explorer實例的連接。 對於32位Windows安裝,必須在注冊表編輯器中檢查的注冊表項是HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Microsoft \\ Internet Explorer \\ Main \\ FeatureControl \\ FEATURE_BFCACHE。 對於64位Windows安裝,密鑰為HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Wow6432Node \\ Microsoft \\ Internet Explorer \\ Main \\ FeatureControl \\ FEATURE_BFCACHE。 請注意,FEATURE_BFCACHE子項可能存在也可能不存在,如果不存在則應創建。 重要說明:在此注冊表項內,創建一個名為iexplore.exe的DWORD值,其值為0。

還有其他一些注意事項,例如需要考慮瀏覽器窗口焦點,因此建議您仔細閱讀驅動程序文檔: https : //code.google.com/p/selenium/wiki/InternetExplorerDriver

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM