Получить идентификатор из getAttribute тега-потомка путем обхода затем в тд, а затем введите тег, чтобы получить его идентификатор - PullRequest
0 голосов
/ 14 января 2020

Я пробовал много способов, некоторые из них работают нормально в расширении chrompath, но не в скрипте, пробовал также этот xpath

//table[@id = 'level3InnerTable_1']/tbody/tr[@id = 'Billable Client']/td[1]/input

Я не могу использовать идентификатор ввода, потому что он динамический c. Я хочу получить идентификатор входного тега, начиная обход с идентификатора <tr> т.е. Billable Client

Я использую селен java Eclipse с Chrome

enter image description here

Ответы [ 2 ]

1 голос
/ 14 января 2020

Чтобы получить значение атрибута id, введите WebDriverWait () и visibilityOfElementLocated () и следующие параметры xpath.

XPATH 1:

new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//td[contains(., 'Bilable to Client')]/preceding::input[1]"))).getAttribute("id");

ИЛИ

XPATH 2:

new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//td[contains(., 'Bilable to Client')]/preceding-sibling::td[1]/input"))).getAttribute("id");

ИЛИ

XPATH 3:

new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//table[@id='level3InnerTable_1']//tr[@id='Billable Client'][.//td[.//input]]]//input"))).getAttribute("id");

Примечание: Если вы получаете исключение тайм-аута из всех них, проверьте, есть ли на странице iframe.

0 голосов
/ 14 января 2020

Чтобы получить значение атрибута ID тега <input>, ссылающегося на тег <tr> со значением ID как Billable Client , вам необходимо: индуцируйте WebDriverWait для visibilityOfAllElementsLocatedBy(), и вы можете использовать любую из следующих стратегий локатора :

  • cssSelector:

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("tr#Billable Client>td>input.selectedrow[name*='chk']"))).getAttribute("id"));
    
  • xpath:

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//tr[@id='Billable Client']/td/input[@class='selectedrow' and contains(@name, 'chk')]"))).getAttribute("id"));
    
...