2017-01-24 1 views
0

У меня есть простая кнопка отправки на странице, которую мне нужно отправить клику, но эта кнопка находится внизу страницы и не отображается, если пользователь не использует вертикальную полосу прокрутки браузера для ее достижения!Как отправить клик на скрытую кнопку?

поэтому, когда я использую этот код C#, я получаю элемент ошибки, не видно, так как я могу решить эту проблему?

driver.FindElement(By.Id("submit")).Click(); 

ответ

0

Я нашел проблему, есть два элемента на странице с id = "submit" !! Я использовал имя, и теперь он отлично работает, спасибо всем.

+0

BTW, это ошибка, и вы должны написать ее разработчикам. DOM не должен иметь повторяющихся идентификаторов, когда-либо. – jibbs

0

Если информация не отображается вами, она не отображается браузером, используемым через ваш драйвер selenium.
Я рекомендую вам симулировать прокрутку, чтобы гарантировать, что ваш объект будет виден, или сделать симуляцию при большем разрешении?
В конце концов вы можете рассмотреть возможность переключения на безголовый драйвер ...

1

Вы можете прокрутить страницу вниз, используя javascript. Что-то вроде этого должно делать работу.

((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight)"); 
1

Selenium Webdriver неявно прокручивает элемент, если он виден. Вы можете дождаться видимости элемента, а затем выполнить операцию щелчка. В Java, мы можем ждать видимости, используя следующий код:

WebDriverWait wait = new WebDriverWait(driver, 60); 
wait.until(ExpectedConditions.visibilityOfElementLocated(driver.findElement(By.id("submit")))); 

В приведенном выше коде, WebDriver будет ждать в течение 60 секунд, в течение требуемого элемента, чтобы стать видимым. Если в течение 60 секунд элемент не появляется, он будет терпеть неудачу с ошибкой тайм-аута. Как только появится необходимый элемент, его можно щелкнуть.