2016-11-16 118 views
0

我想單擊基於鏈接文本的複選框。有幾個複選框的頁面,以便使用我想找到的複選框的值,這樣我就可以點擊該複選框Selenium Webdriver - Java - 如何點擊基於產品的複選框

注#所有的值是動態生成

能否請您幫助糾正代碼的鏈接文本包括這個邏輯。由於

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

+0

請張貼的HTML作爲正確格式化你的問題,而不是作爲一個圖像文本。另外,請花一分鐘修復代碼的縮進,以便更容易閱讀。 – JeffC

+0

根據您的要求更新我的問題 – Selvi

回答

0

您可以通過以下策略做:

  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

你可以使用XPath這樣的:

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

這意味着找到了這個確切的td文本並從中找到input
如果你想使用則部分文本:

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

檢查了這一點:

  1. 獲得具有即普通類名稱或標記名稱的通用定位器複選框WebElements的列表(此WebElement必須具有文本或者是具有文本的元素的父代)。

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

    for (WebElement e : checkBoxElements) { 
        if (e.getText().contains("Something dynamic")) { 
         e.click(); 
        } 
    } 
    
  3. 很高興認識到這一點。

0

我會寫這個部分作爲一個函數,使它可重用。

public static void selectByProductName(String value) 
{ 
    driver.findElement(By.xpath("//tr[//a[text()='" + value + "']]/td/input")).click(); 
} 

,然後調用它像

selectByProductName("OPIOIDMORTEID"); 
+0

嗨,Jeff,我嘗試了上面的代碼,但沒有找到產品並點擊複選框。感謝您的協助! – Selvi

相關問題