2017-04-10 114 views
0

使用此代碼將元素帶入瀏覽器視圖時,它大部分時間都有效。MoveToElement元素剛剛在屏幕上時

protected void MakeVisible(IWebElement link, bool always) 
    { 
     var actions = new Actions(this.Driver); 
     actions.MoveToElement(link).Perform(); 
     ... 

然而,當元素是只是(比如一個按鈕,50%存在)在屏幕上,它沒有,但它是不夠的屏幕爲click事件註冊。

enter image description here

(在剪斷的底部是瀏覽器窗口的底部)

我該如何處理這種特殊情況?

這是使用FireFox驅動程序遇到的。

回答

1

我從來沒有見過這種行爲。通常,當我點擊一個元素時,如果它不在屏幕外,那麼視口(自動)會滾動,以便它可見並且被點擊。我會給你我最好的猜測,希望它會給你一些想法,你可以調查並希望解決問題。

所以我認爲問題是.MoveToElement()移動到元素的中心。如果所討論的元素的中心位於頁面上,但由於它不完全可見而無法點擊,那麼似乎解決方案就是確保整個元素都在頁面上。我能想到的一個方法是使用MoveToElement(IWebElement, Int32, Int32)。偏移量來自元素的左上角。如果您使用此選項移動到左上角然後右下角,則該組合應完全顯示該元素,然後單擊它。左上角爲0,0,右下角爲IWebElement.Size,以獲取元素的寬度和高度。

函數會是這個樣子

public void ShowElement(IWebElement e) 
{ 
    Actions action = new Actions(Driver); 
    action.MoveToElement(e, 0, 0).MoveToElement(e, e.Size.Width, e.Size.Height).Build().Perform(); 
}