[通过遍历从后代标签的getAttribute中获取ID 然后到td,然后输入标签以获取其ID

问题描述 投票:0回答:2

我已经尝试了许多方法,其中一些方法在chrompath扩展中工作正常,但在脚本中也没有尝试过此xpath

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

我无法使用输入ID,因为它是动态的。我想通过从<tr>的ID开始遍历,即Billable Client

来获取输入标签的ID

我正在Chrome中使用Selenium Java Eclipse

enter image description here

java selenium xpath css-selectors webdriverwait
2个回答
1
投票

要获取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");

OR

XPATH 2:

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

OR

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。


-1
投票

要检索<input>标记的ID属性的值,并以ID值作为[[Billable Client引用<tr>标记,则必须为WebDriverWait引入visibilityOfAllElementsLocatedBy(),则可以使用以下Locator Strategies之一:

  • 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"));


  • 0
    投票

    要检索<input>标记的ID属性的值,并以ID值为[[Billable Client引用<tr>标记,则必须为WebDriverWait引入visibilityOfAllElementsLocatedBy(),则可以使用以下Locator Strategies之一:

    • 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"));


  • 0
    投票
    感谢所有人。这个xpath有效WebElement CheckboxID1 = driver.findElementByXPath(“ // tr [@ id ='Billable Client'] / td / input”)。getAttribute(“ id”);

    但是我对此的最后一个查询是,当我根据id给出变量时,它失败了字符串CheckBoxID1 = driver.findElementByXPath(“ // tr [@id ='” + Level3KeyCase0Trimmed +“'] / td / input”)。getAttribute(“ id”);

    © www.soinside.com 2019 - 2024. All rights reserved.