[英]Selenium Webdriver - Java - How to click checkbox based on product
我想單擊基於鏈接文本的復選框。 頁面中有多個復選框,因此使用鏈接文本我想查找復選框的值,以便可以單擊該復選框
注意#所有值都是動態生成的
您能否幫助更正代碼以包括此邏輯。 謝謝
driver.get(new URI(driver.getCurrentUrl()).resolve("/admin/lms/tag").toString());
String tag_name = sheet1.getRow(j).getCell(0).getStringCellValue();
driver.findElement(By.linkText(tag_name)).click();
WaituntilElementpresent.isExist();
String tag_value = sheet1.getRow(j).getCell(1).getStringCellValue();
driver.findElement(By.cssSelector("a[href*='"+tag_value+"']")).click();
WaituntilElementpresent.isExist();
String product = sheet1.getRow(j).getCell(2).getStringCellValue();
WaituntilElementpresent.isExist();
driver.findElement(By.cssSelector("input[name='products[]'][value='11']")).click();
您可以這樣使用xpath:
//tr[.//*[text()='OPIOIDMORTEPID']]//input
這意味着找到具有此確切文本的td
並從中查找input
。
如果要使用部分文本,則:
//tr[.//*[contains(text(), 'MORTEPID')]]//input
您可以使用以下策略來做到這一點:
tr
元素 input
元素 可以按照以下步驟進行:
WebElement link = driver.findElement(By.linkText("OPIOIDMORTEPID"));
WebElement trElement = link.findElement(By.xpath("../.."));
WebElement checkboxElement = trElement.findElement(By.tagName("input"));
checkboxElement.click();
看一下這個:
獲取具有公共定位符(即公共類名或標記名)的復選框WebElement的列表(此WebElement必須具有文本,或者是具有文本的元素的父級)。
List<WebElement> checkBoxElements = webDriver.findElements(By.cssSelector("checkbox"));
遍歷列表,並檢查WebElement是否包含您要查找的文本。 如果是這樣,請單擊它!
for (WebElement e : checkBoxElements) { if (e.getText().contains("Something dynamic")) { e.click(); } }
對此工作感到高興。
我會將本節作為函數編寫,以便可重用。
public static void selectByProductName(String value)
{
driver.findElement(By.xpath("//tr[//a[text()='" + value + "']]/td/input")).click();
}
然后像這樣稱呼它
selectByProductName("OPIOIDMORTEID");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.