Xpath - который будет извлекать, если роль активна / неактивна - PullRequest
0 голосов
/ 13 июля 2020

Если вы перейдете по этой ссылке [информация для входа уже есть]

https://admin-demo.nopcommerce.com/Admin/CustomerRole/List

Я пытаюсь узнать статус бесплатной доставки для администратора . Я пробовал несколько вещей, но не могу найти способ получить его

Проба 1:

//table//thead//th[1]/../../..//tbody//tr//td[text()='Administrators']  >> role 


//table//thead//th[text()='Free shipping']/../../../../../..//tbody//tr//td[text()='Administrators']   >> service of role  *** I think from Admin i should traverse to service type 

Проба 2:

public void changeRoleAs(String roleName , String roleType,  String isActive)
    {
        List<WebElement> allHeaders = driver.findElements(By.xpath("//table//thead//th"));
        int colValue = allHeaders.indexOf(roleType)+1;
        String customLoc = "//td[text()='" + roleName + "']/..//td['" + colValue + "']/i";
       String vurrentValue =  driver.findElement(By.xpath(customLoc)).getAttribute("nop-value");
       if(!vurrentValue.equals(isActive))
       {

       }

Какой может быть xpath, который я могу использовать для проверки статуса, скажем что-то вроде ниже

Admin / FreeShipping. / I getAttribute ["nop-value"]

Заранее благодарим за уделенное время.

Ответы [ 3 ]

1 голос
/ 13 июля 2020

Xpath для «Бесплатная доставка» для «Администраторов» будет //tr[td[text()='Administrators']]/td[2]/i

Тогда вы получите значение атрибута, например:

String value =  driver.findElement(By.xpath("//tr[td[text()='Administrators']]/td[2]/i")).getAttribute("nop-value");
1 голос
/ 13 июля 2020

Если вы хотите указать значение как столбца Free shipping, так и поля строки Free shipping, используйте приведенный ниже xpath для получения элемента, а затем используйте getAttribute("nop-value").

//table[@id='customerroles-grid']//tr[./td[text()='Administrators']]/td[count(//table[@id='customerroles-grid']//th[contains(.,'Free shipping')]/preceding-sibling::*)+1]/i

Аналогичным образом вы можете сделайте другое значение, например

//table[@id='customerroles-grid']//tr[./td[text()='Administrators']]/td[count(//table[@id='customerroles-grid']//th[contains(.,'Active')]/preceding-sibling::*)+1]/i
0 голосов
/ 13 июля 2020

Вы можете сначала найти строки, используя их xpath, а затем можете перебирать строки, чтобы проверить, содержит ли эта строка «Administrators», если да, то вы можете go перейти к его дочернему элементу, используя его xpath, а затем можете найти nop-value. Вы можете сделать это так:

List<WebElement> elementList = driver.findElements(By.xpath("//div[@class='dataTables_scrollBody']//tbody//tr"));
String nopValue="";
for(int i =0;i<elementList.size();i++){
    if(elementList.get(i).getText().contains("Administrators")){
        nopValue= elementList.get(i).findElement(By.xpath(".//i")).getAttribute("nop-value");
        break;
    }
}
...