java
  • selenium
  • dom
  • xpath
  • 2016-09-28 5 views 0 likes 
    0

    Поэтому у меня есть вебы-страница, где идентификаторы отдельных элементов генерируются динамически определенные изменения части и некоторые части постоянны, как так:проверка Селена, если атрибут содержит часть строки в Java

    <div id= "xxxdiv" title= 'this title'> 
        <p id = "xxxp"> 
        <table id = "xxxtable" title = 'not derp'> 
         <div id = "yyyydiv"> 
          <table id = "yyytable" title= 'derp'> 
          <table id = "yyytable2" title = 'not derp'> 
           <table id = "zzztable" title = derp> 
    

    Я пытаясь сделать некоторые динамические поиски на странице, которые могут искать данный элемент, где идентификатор содержит известное значение. Например, я не всегда знаю, сколько вложенных элементов может существовать, поэтому число, которое генерируется в конце, может варьироваться. Поэтому я хотел бы найти элемент по xpath, где @title = not derp и @id содержат yyy. Как я могу это сделать?

    +0

    Вы хотите только стол или любой элемент, который соответствует вашим условиям? – testerjoe2

    ответ

    2
    driver.findElement(By.xpath("//table[@title='not derp' and contains(@id, 'yyy')]")); 
    

    найти первый элемент, который соответствует вашим критериям поиска, которые бы <table id = "yyytable2" title = 'not derp'> вашего HTML-фрагмента.

    +0

    Технически это находит первый элемент 'TABLE' ... не только первый элемент. Зависит от того, что хочет OP. Его можно легко переключить на '' // * [@ title ... "', чтобы сделать его общим. – JeffC

    +0

    @JeffC Правда, я отредактировал ответ, чтобы уточнить. –

    +0

    Спасибо. Это было очень полезно – Jrawr

    1

    Существует целый ряд реляционных и логических операторов, которые вы можете использовать. В этом случае, если вы ищете для элемента таблицы, вы можете использовать: //table[@title='not derp' and contains(@id,'yyyy')]

    1

    Я хотел бы найти элемент по XPath, где @title = не Derp и @id содержит YYY

    Я хотел бы предложить вам cssSelector вместо этого, потому что с помощью By.cssSelector(), чтобы найти элемент гораздо быстрее, чем By.xpath() в исполнении. Поэтому вы должны попробовать, как показано ниже: -

    driver.findElement(By.cssSelector("table[id *= 'yyy'][title = 'not derp']")); 
    

     Смежные вопросы

    • Нет связанных вопросов^_^