簡體   English   中英

Selenium Webdriver-Java-如何根據產品單擊復選框

[英]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();

https://i.stack.imgur.com/mOBY2.png

您可以這樣使用xpath:

//tr[.//*[text()='OPIOIDMORTEPID']]//input

這意味着找到具有此確切文本的td並從中查找input
如果要使用部分文本,則:

//tr[.//*[contains(text(), 'MORTEPID')]]//input

您可以使用以下策略來做到這一點:

  1. 使用鏈接文本查找鏈接
  2. 獲取父tr元素
  3. 從那里找到復選框的input元素
  4. 點擊復選框

可以按照以下步驟進行:

WebElement link = driver.findElement(By.linkText("OPIOIDMORTEPID"));
WebElement trElement = link.findElement(By.xpath("../.."));
WebElement checkboxElement = trElement.findElement(By.tagName("input"));

checkboxElement.click();

看一下這個:

  1. 獲取具有公共定位符(即公共類名或標記名)的復選框WebElement的列表(此WebElement必須具有文本,或者是具有文本的元素的父級)。

     List<WebElement> checkBoxElements = webDriver.findElements(By.cssSelector("checkbox")); 
  2. 遍歷列表,並檢查WebElement是否包含您要查找的文本。 如果是這樣,請單擊它!

     for (WebElement e : checkBoxElements) { if (e.getText().contains("Something dynamic")) { e.click(); } } 
  3. 對此工作感到高興。

我會將本節作為函數編寫,以便可重用。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM