Webelement.Click () - получение исключения для Webelement.Click (), хотя он щелкает элемент

Мета

ОС: Windows Selenium Версия: 2.53.1.0 IDE: Visual Studio 2013 Браузер: Internet Explorer 11 версии 11.420

Я получаю исключение, когда пытаюсь щелкнуть элемент на веб-странице. Это происходит, когда щелкают ссылку, и открывается диалоговое окно. Функция Webelement.click () щелкает элемент, и открывается модальное диалоговое окно, но Click () требует времени для возврата и, наконец, регистрирует исключение как «HTTP-запрос к удаленному серверу WebDriver для URL" "истек через 60 секунд. '

Ожидаемое поведение:

Он должен нажать кнопку загрузки «Firefox Beta», и появится «панель инструментов IE» с опцией ЗАПУСК и СОХРАНИТЬ.

Фактическое поведение:

Он нажимает кнопку загрузки «Firefox Beta», и появляется «панель инструментов IE». Но downloadElement.Click () ждет 60 секунд и выдает исключение.

Действия по воспроизведению:

Ниже приведен фрагмент кода:

string url = "https://www.mozilla.org/en-US/firefox/channel/#beta";
try{
   IWebDriver driver = new InternetExplorerDriver();        
   driver.Navigate().GoToUrl(url);    
   Thread.Sleep(5000);    
   IWebElement downloadElement = driver.FindElement(By.XPath("//div[@id='download-button-desktop-beta']/ul/li/a/strong"));    
   Thread.Sleep(5000);    
   downloadElement.Click();   
  }catch{
     //catch block
  }

person Aniruddhya    schedule 12.10.2016    source источник


Ответы (3)


Попробуйте вместо этого указать этот xpath.

IWebElement downloadElement = driver.FindElement(By.XPath("/html/body/div[2]/div/main/section[1]/div/div/ul/li[1]/a/strong"));

Иногда у них есть проблемы с селеном IE11, который не может работать должным образом. поэтому я использую двойной щелчок вместо щелчка в определенных сценариях.

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("/html/body/div[2]/div/main/section[1]/div/div/ul/li[1]/a/strong"))).doubleClick().perform();

попробуйте использовать оба, надеюсь, это поможет

person Anuraj R    schedule 13.10.2016
comment
Спасибо Anuraj .. Второй вариант помог. :) - person Aniruddhya; 13.10.2016
comment
@Aniruddhya, всегда рад помочь. :-) проголосуйте за ответ, другим тоже поможет - person Anuraj R; 14.10.2016

Вы можете добавить неявное ожидание после downloadElement.Click () и дождаться полной загрузки модального диалога.

person Priya P    schedule 13.10.2016
comment
вы можете добавить неявный оператор ожидания, как показано ниже: downloadElement.Click (); driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS); - person Priya P; 14.10.2016
comment
Или скачайте Element.Click (); WebDriverWait wait = новый WebDriverWait (drv, 30); wait.until (ExpectedConditions.visibilityOfElementLocated (По ..... пути диалогового окна)); Или wait.until (ExpectedConditions.alertIsPresent ())! = Null); - person Priya P; 14.10.2016

Попробуй это. У меня это сработало -

package sbps;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class cvs_signup
{
    public static void main(String[] args) {

        String url = "https://www.mozilla.org/en-US/firefox/channel/#beta";
        try{
           WebDriver driver = new InternetExplorerDriver();
           driver.get(url);
           Thread.sleep(5000);
           WebElement downloadElement = driver.findElement(By.xpath("(//a[@href='https://download.mozilla.org/?product=firefox-beta-stub&os=win&lang=en-US'])[last()]"));
           Thread.sleep(5000);
           downloadElement.click();
          }catch(Exception e){
             //catch block
          }
        }
}
person Hemant Kulkarni    schedule 13.10.2016