Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在运行时更改对象属性时,使用Selenium自动化Ember.js应用程序_Java_Selenium_Ember.js_Webdriverwait_Expected Condition - Fatal编程技术网

Java 在运行时更改对象属性时,使用Selenium自动化Ember.js应用程序

Java 在运行时更改对象属性时,使用Selenium自动化Ember.js应用程序,java,selenium,ember.js,webdriverwait,expected-condition,Java,Selenium,Ember.js,Webdriverwait,Expected Condition,我正在尝试使用Selenium+TestNg自动化一个Ember.js应用程序 应用程序中的下拉列表只有一个对象属性id。但是,每次刷新页面id时,页面id都会发生更改,并且没有模式。 例如:第一次打开页面id=ember1398时,当我刷新页面时,相同的对象id会更改为ember1097 如果有人能指导我克服这一挑战,我将不胜感激。我愿意在必要时更改工具/框架。这是Ember的一个已知问题。我们与许多第三方应用程序进行集成,因此我们使用selenium进行了大量自动化测试,当他们使用ember

我正在尝试使用Selenium+TestNg自动化一个Ember.js应用程序

应用程序中的下拉列表只有一个对象属性id。但是,每次刷新页面id时,页面id都会发生更改,并且没有模式。 例如:第一次打开页面id=ember1398时,当我刷新页面时,相同的对象id会更改为ember1097


如果有人能指导我克服这一挑战,我将不胜感激。我愿意在必要时更改工具/框架。

这是Ember的一个已知问题。我们与许多第三方应用程序进行集成,因此我们使用selenium进行了大量自动化测试,当他们使用ember时,我们遇到了这个问题,这意味着我们无法像与其他合作伙伴一样测试代码。我确信使用Ember有很好的理由,但能够用硒轻松测试它并不是其中之一。在余烬中有一个bug打开了,但它关闭了


在ember修复此问题之前,我的建议是使用不同的JS框架,该框架是为第三方使用JS和/或框架本身以外的其他东西进行测试而构建的。

这是ember的一个已知问题。我们与许多第三方应用程序进行集成,因此我们使用selenium进行了大量自动化测试,当他们使用ember时,我们遇到了这个问题,这意味着我们无法像与其他合作伙伴一样测试代码。我确信使用Ember有很好的理由,但能够用硒轻松测试它并不是其中之一。在余烬中有一个bug打开了,但它关闭了

在ember修复此问题之前,我的建议是使用不同的JS框架,该框架是为第三方使用JS和/或框架本身以外的其他东西进行测试而构建的。

由于所需元素是启用元素,因此一些属性(例如id)将动态生成。例如,
ember371
ember382
ember393
等。在这些情况下,您将无法使用
id
属性的完整值来定位元素。作为一个例子,考虑以下元素:

<input placeholder="" id="ember32" class="ssRegistrationField ssEmailTextboxField ember-text-field ember-view" type="email">
  • xpath

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[starts-with(@id, 'ember') and @class='ssRegistrationField ssEmailTextboxField ember-text-field ember-view']")));
    
  • 由于所需元素已启用,因此某些属性(如id)将动态生成。例如,
    ember371
    ember382
    ember393
    等。在这些情况下,您将无法使用
    id
    属性的完整值来定位元素。作为一个例子,考虑以下元素:

    <input placeholder="" id="ember32" class="ssRegistrationField ssEmailTextboxField ember-text-field ember-view" type="email">
    
  • xpath

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[starts-with(@id, 'ember') and @class='ssRegistrationField ssEmailTextboxField ember-text-field ember-view']")));
    

  • 您不能使用xpath来定位元素吗?只显示id属性,并且在运行时也会发生更改,而且由于没有更改模式,因此无法创建xpath。您可以发布代码大纲吗…?您是否发现了这一点?您不能使用xpath来定位元素吗?只显示id属性,并且在运行时和运行时也会发生更改因为没有改变的模式,所以创建xpath是不可能的。你可以发布代码的大纲吗?你有没有弄明白这一点?