2016-09-20 7 views
-1

angularJs要素のxpathをどのように見つけることができますか?例えば私は自分のページ内のすべてのリンクが原因angularJsで繰り返しアイテムに同じXPathを持っていることを発見した - 彼らはテキストのdifferenteあり、>angularJs要素のxpathを見つける方法はありますか?

.//*[@id='div_1_1_1_2']/div/div[1]/div[2]/div[2]/div/div[2]/div[1]/div/div[2]/a 

が、私は要素の10持っているので、私は「`を試してみました

ので、私は含まれてみましたが、それは見つけることはありません、それ、これは私のコード

です

.//[@id='div_1_1_1_2']/div/div[1]/div[2]/div[2]/div/div[2]/div[1]/div/div[2]/a[contains(@aria-label='Creazione Prodotto')]"` 

私はセレン、junit4を使用し、Firefoxのwebdriverを

public class PB01_TTT { 
    private WebDriver driver; 
    private String baseUrl; 
    private boolean acceptNextAlert = true; 
    private StringBuffer verificationErrors = new StringBuffer(); 
    WebElement element; 




    @Before() 
     public void setUp() throws Exception { 

    FirefoxProfile fxProfile = new FirefoxProfile(); 
    fxProfile.setPreference("browser.download.folderList", 2); 
    fxProfile.setPreference("browser.download.manager.showWhenStarting", false); 

    fxProfile.setPreference("browser.helperApps.alwaysAsk.force", false); 
    fxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", 
      "application/pdf, application/x-pdf, application/octet-stream"); 
    fxProfile.setPreference("pdfjs.disabled", true); 
    driver = new FirefoxDriver(fxProfile); 
    baseUrl = "https://w8aon2bpm.replynet.prv:9443"; 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    } 




    @Test 
     public void testPBO1TTT() throws Exception { 

      driver.get(baseUrl + "/ProcessPortal/login.jsp"); 
      // driver.get(baseUrl + "/ProcessPortal/dashboards/SYSRP/RESPONSIVE_WORK"); 

      driver.findElement(By.id("username")).clear(); 
      driver.findElement(By.id("username")).sendKeys("user"); 
      driver.findElement(By.id("password")).clear(); 
      driver.findElement(By.id("password")).sendKeys("password"); 





      String columnToDisplay=driver.findElements(By.xpath(".//*[@id='div_1_1_1_2']/div/div[1]/div[2]/div[2]/div/div[2]/div[1]/div/div[2]/a[contains(@aria-label='Creazione Prodotto')]")); 


     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 



        element = (WebElement) driver.findElements(By.xpath(columnToDisplayXpath)); 

        Assert.assertNotNull(element); 

いつもnotFoundElement、何か提案を返しますか?

は、あなたが10個のリンクを持っている場合、それらは、パスが同じであっても方法で異なっている。この場合、あなたはそのことに基づいてパスを構築する必要が高い可能性があるあなたに

答えて

0

ありがとうございました異なります。たとえば
:あなたは、セレクタを得ることに任意の助けが必要な場合は、リンクのHTMLセクションを追加してくださいHREF、テキストまたは他に

//a[contains(@href, 'part_of_href')] 
//a[contains(text(), 'part_of_text')] 
//a[@title='title'] 
//a[contains(@aria-label='Creazione Prodotto')] 

を異なり、任意の部分を使用し、必要な場合は、URLを変更することができます。

ヒント:これは将来的にあなたの仕事の多くを与える.//*[@id='div_1_1_1_2']/div/div[1]/div[2]/div[2]/div/div[2]/div[1]/div/div[2]/a[contains(@aria-label='Creazione Prodotto')]" :何かを示唆していないと、彼らは次のように変更することができます絶対のXPathや属性を使用しないでください。

関連する問題