0

我在模擬手機屏幕上測試,因此屏幕空間非常寶貴。我使用下面的代碼在單擊之前將元素放入視圖中,但是,在點擊操作發生之前,滾動條疊加層不會清除。Selenium Webdriver:滾動條正在進入點擊動作

IJavaScriptExecutor je = (IJavaScriptExecutor)Driver.Instance; 

je.ExecuteScript("arguments[0].scrollIntoView(true); window.scrollBy(50, -200);", element); 

Thread.Sleep(700); 

我可以讓睡眠更長,但這會顯着減慢我的測試。我試過了我能想到的一切,似乎沒有任何工作。

事情我已經試過

初始化chromedriver當禁用滾動條覆蓋。 (沒有刪除滾動覆蓋) chromeOptions.AddArguments("disable-overlay-scrollbar")

使用操作API

Actions btnAction = new Actions(Driver.Instance); 
btnAction.MoveToElement(element).Click().Perform(); 

MoveToElement也有抵消的說法,但據我所知,這並不影響該元素是如何定位的在窗口中。

有沒有人遇到過這個問題?如果是這樣,你怎麼解決它?

謝謝。

回答

0

你可以使用顯式的等待,而不是Thread.Sleep(700),使點擊它

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
wait.Until(ExpectedConditions.ElementToBeClickable(element)).Click(); 
+0

感謝您的答覆之前,請確保該元素是點擊,但我已經試過這一點。我不認爲硒能夠識別滾動條。嘗試等待可點擊時,我仍然遇到同樣的錯誤。 –

相關問題