簡體   English   中英

Selenium c#:如何在特定版本中啟動Internet Explorer驅動程序(例如IE8)

[英]Selenium c#: How to launch Internet Explorer driver in a specific version (IE8 for example)

在java中,可以通過傳遞Desired Capabilities為Internet Explorer驅動程序設置IE版本。 這在C#中不起作用。

我希望它看起來像:

DesiredCapabilities ieCapabilities = null;
ieCapabilities = DesiredCapabilities.InternetExplorer();
ieCapabilities.SetCapability(CapabilityType.Version, "8");

IWebDriver driver = new InternetExplorerDriver(ieCapabilities);

在c#中,我無法將DesiredCapabilities傳遞給InternetExplorerDriver()構造函數。

DesiredCapabilities包含在特定驅動程序的各種Options類中。

有一個InternetExplorerOptions類,它允許您指定用於啟動IE的額外選項,其中一個方法是AddAdditionalCapability ,它允許您添加您想要請求的任何功能。 這意味着選項包含的功能隨后傳遞給驅動程序

至於你的具體問題,不可能。 這也不是Selenium或IEDriverServer的限制,而是IE本身。 如果沒有重大黑客攻擊,你不能同時在一台機器上安裝多個版本的IE。 另一方面考慮一下 - 無論何時升級IE,它都會卸載以前的版本。

它將啟動您當前安裝的IE。 其他任何東西都是純粹的錯誤,而且,這是錯誤的,因為你不能同時在Windows機器上擁有多個版本的IE。

解決這個問題的唯一方法是為每個版本配備單獨的機器或VM,或投資SauceLabs等自動化雲測試框架。

編輯

您還提到過您希望使用IE8的兼容模式,或者想知道在使用IED驅動程序時是否可行。

這是完全不同的(雙關語)。

IE中的兼容性引擎不是該瀏覽器引擎的真實表示。 因此,你必須認為你正在運行,比如IE9與IE7兼容模式,因此期望IE7完全 - 它不會,甚至微軟說這個,它將被用於adhoc測試 - 它不是依賴於。 因此,即使你做到這一點,即使是最輕微的條款,它也不是一個可靠的測試。

問題仍然不是Selenium問題。 IED驅動程序將調用IE安裝的任何內容,此時,它將由IE設置為Selenium可以連接的會話。

值得一提的是,您可以與IED驅動程序一起使用的所有兼容性選項不會影響IE本身,更多的是會話的創建以及Selenium如何與之交互。

在這一點上,Selenium把手舉到空中,它幾乎無法做到。

考慮到這一點,Selenium根本無法強制IE使用某種瀏覽器模式。 完全沒有API來做這件事,因此,這並不容易。

這里的解決方法是強制IE首先在兼容性視圖中查看。 您的選擇非常有限:

強制IE9進入瀏覽器兼容性視圖

要實例化不同的版本,可以使用capability.setVersion將版本設置為所需的版本號。 同時,在啟動節點時,需要在命令行中添加以下參數:

browser "browserName=internet explorer,maxInstances=5,platform=WINDOWS, version=8"

要在同一節點上支持多個版本,可以多次使用“-browser”。

暫無
暫無

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

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