2017-08-31 97 views
1

我已經研究並嘗試了幾種不同的方法來確定這個元素的斷言測試。 Xpath不起作用,ng-model不起作用。有任何想法嗎?Selenium Java不能選擇AngularJS元素

<input type="text" ng-class="{'ng-dirty': !merchant.name}" ng- 
    model="merchant.name" required="" class="ng-pristine ng-valid ng-not-empty 
    ng-valid-required ng-touched" style=""> 

代碼我到目前爲止有:

@Test 
public static void merchant_name() { 
    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 
    WebElement merchant_name = driver.findElement(
       By.xpath("input[@class='ng-pristine ng-valid ng-not-empty ng-valid-required ng-touched']") 
      ); 
    Assert.assertEquals(merchant_name.getAttribute("value"), "Regression Testing"); 
} 
+0

你可以用你嘗試過的那些不同的方式來擴展你的問題嗎? –

+0

沒問題。這是我在DebanjanB的建議中的嘗試: – Devvvvv

+0

@Test public static void merchant_name(){driver.manage()。timeouts()。implicitlyWait(15,TimeUnit.SECONDS); (「input」[@ class ='ng-pristine ng-valid ng-not-empty ng-valid-required ng-touched']「));Assert.assertEquals(merchant_name.getAttribute(「value」),「Regression Testing」); \t} – Devvvvv

回答

0

您可以考慮使用class屬性使用以下xpath

//input[@class='ng-pristine ng-valid ng-not-empty ng-valid-required ng-touched'] 

另一種策略可能是同時使用classtype屬性:

//input[@class='ng-pristine ng-valid ng-not-empty ng-valid-required ng-touched' and @type='text'] 
0

這個伎倆。

@Test 
    public static void merchant_name() { 
    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 
    WebElement merchant_name = 
    driver.findElement(By.xpath("html/body/div[1]/div/ng- 
    view/div/div/div[2]/div/div/ng-form/div[3]/div/input")); 
    Assert.assertEquals(merchant_name.getAttribute("value"), "Regression 
    Testing"); 
    }