2017-05-24 81 views
0

一個按鈕,用戶界面不會出現,如果我的瀏覽器的縮放比例爲100%,所以一旦我放大使用下面的代碼,即特定按鈕會出現在UI如何在縮放級別爲100%時點擊UI上不可見的元素?

driver.execute_script("document.body.style.zoom='80%'") 

但是,在那個特定的按鈕操作雖然在UI出現在按鈕甚至不出現放大的狀態,而不是我得到這個錯誤信息

{WebDriverException}Message: unknown error: Element is not clickable at point (891, 568). Other element would receive the click: (Session info: chrome=58.0.3029.110) (Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 6.1.7601 SP1 x86)

我沒有我的本地機器上得到的問題,因爲特定的按鈕,用戶界面出現在瀏覽器的縮放級別是100%,它運作良好,因爲我不必放大。

但因爲我必須在我遠程連接使用客戶機虛擬框工作,在那裏我得到這個UI問題。由於虛擬框屏幕出現在我的客戶端機器屏幕內,其高度降低,並且該特定按鈕從底部的UI消失。

所以需要放大才能執行此操作,並再次縮放級別重置爲100%。我在這裏做錯了什麼,或者有什麼其他方法可以解決這個問題嗎?

編輯:附加截圖 enter image description here

+0

可以嘗試滾動元素而不是放大了'JavascriptExecutor JSE =(JavascriptExecutor)驅動程序; jse.executeScript(「窗口。scrollBy(0250)」,‘’);'讓我知道如果面對你爲什麼要同時使用'Java'&'Python'標記您的客戶機 –

+1

改變分辨率您的客戶端寫的什麼語言?你也可以考慮發佈的有問題的代碼片斷?這是相當困難的調試你的問題,因爲它主張。而且據我所知,webdriver的不被'顯示port'結合做動作時,像'。點擊()'所以有這是爲什麼不工作可能是另一個問題。 – san1deep2set3hi

+0

@ShoaibAkhtar的同樣的問題 – iamdanchiv

回答

0

對於測試自動化,如果我們必須處理遠程機器(例如Sauce實驗室),認真考慮屏幕分辨率總是有益的。

在當今世界的響應式網站,我們需要經常更改瀏覽器窗口大小這個要求變得更加有效。

在醬實驗室我們改變客戶機的分辨率編程方式使用以下

capabilities.setCapability("screenResolution", "1920x1080"); 

對於不同的設置,我們可能需要通過@ShoaibAkhtar上述意見提到遵循的步驟。

1

可以使用ActionChains

from selenium.webdriver.common.action_chains import ActionChains 

element = driver.find_element_by_... 
ActionChains(driver).move_to_element(element).perform() 
element.click() 
0

我有同樣的問題模擬滾動。驅動程序通常應該在每次點擊時滾動到元素,並且它會滾動,但它只是滾動到僅僅幾乎看不見的元素。

所以有時可以由其他元素所覆蓋,而司機認爲元素是可見的,然後那裏有一個例外。

我找到了一個很好的解決辦法在這裏:selenium scroll element into (center of) view

中心頁面,讓元素在頁面的中間:

在C#:

var js = d as IJavaScriptExecutor; 

String scrollElementIntoMiddle = "var viewPortHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);" 
                + "var elementTop = arguments[0].getBoundingClientRect().top;" 
                + "window.scrollBy(0, elementTop-(viewPortHeight/2));"; 

js.ExecuteScript(scrollElementIntoMiddle, element); 

element.Click(); 

我試圖放大了在第一,但至少在Chrome中,Selenium在縮小時無法工作,因此無法工作。