【问题标题】:Is there a way to use Protractor and Selenium together?有没有办法同时使用 Protractor 和 Selenium?
【发布时间】:2017-01-19 14:57:32
【问题描述】:

我有一个正在测试的应用程序,它有一个 iFrame,其中注入了 Angular 应用程序。我的测试套件在 Java Selenium 中,我发现在 Angular 应用程序中操作控件非常困难。

我已经单独使用量角器和硒,但是在这种情况下,我发现很难找到解决方案。

我的问题是:

  1. 有没有一种方法可以让我完全等待角负载,然后才能切换到 iFrame 并纯粹在 selenium 中操作控件?
  2. 如果没有,有没有办法或任何人有任何解决方法,只有 Angular 应用程序部分我们可以使用量角器脚本? (基本上我是在问量角器和硒套件是否可以齐头并进?)

非常感谢任何帮助。

【问题讨论】:

标签: selenium protractor


【解决方案1】:

我们还使用 Selenium 和 java 自动化 Angularjs 应用程序。我们编写了自己的同步和等待加载函数,如下所示:

public void Sync()
        {
            //waitForLoading();
            try
            {
             JavascriptExecutor js = (JavascriptExecutor)driver;   
             WebDriverWait wait = new WebDriverWait(webDriver, 300);//timeoutInSeconds
             wait.Until(js.executeScript("return document.readyState").toString().equals("complete"));
                Thread.sleep(4000);

            }
            catch
            {
                Thread.sleep(16000);
            }
        }


//Another version of the same function based on time based polling to make it more dynamic
public void checkPageIsReady() {

  JavascriptExecutor js = (JavascriptExecutor)driver;


  //Initially bellow given if condition will check ready state of page.
  if (js.executeScript("return document.readyState").toString().equals("complete")){ 
   System.out.println("Page Is loaded.");
   return; 
  } 

  //This loop will rotate for 25 times to check If page Is ready after every 1 second.
  //You can replace your value with 25 If you wants to Increase or decrease wait time.
  for (int i=0; i<25; i++){ 
   try {
    Thread.sleep(1000);
    }catch (InterruptedException e) {} 
   //To check page ready state.
   if (js.executeScript("return document.readyState").toString().equals("complete")){ 
    break; 
   }   
  }
}

【讨论】:

  • 感谢您发布答案。但是,有一个问题 - 您对使用 selenium 自动化 Angular 应用程序有何看法?
  • 我不建议这样做。如果是 angularJS,那么你应该只使用量角器。在我们的案例中,选择它有一些商业原因。
  • 但是我不明白为什么我们必须在量角器中使用 javascript 作为语言。我希望在 ruby​​ 或 python 中可以移植 Protractor。
猜你喜欢
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2019-11-26
  • 2017-03-17
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多