我已经尝试了许多方法,其中一些方法在chrompath扩展中工作正常,但在脚本中也没有尝试过此xpath
//table[@id = 'level3InnerTable_1']/tbody/tr[@id = 'Billable Client']/td[1]/input
我无法使用输入ID,因为它是动态的。我想通过从<tr>
的ID开始遍历,即Billable Client
我正在Chrome中使用Selenium Java Eclipse
要获取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。
要检索<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"));
要检索<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"));
但是我对此的最后一个查询是,当我根据id给出变量时,它失败了字符串CheckBoxID1 = driver.findElementByXPath(“ // tr [@id ='” + Level3KeyCase0Trimmed +“'] / td / input”)。getAttribute(“ id”);