2016-11-16 3 views
0

Я бы хотел щелкнуть галочкой на основе текста ссылки. Есть несколько Флажок на странице таким образом, используя текст ссылки, я хотел, чтобы найти значение флажка, так что я могу нажать на флажокSelenium Webdriver - Java - Как нажать на флажок, основанный на продукте

Note # Все значения динамически генерируемый

Можете ли вы помочь исправить код включить эту логику. Благодаря

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 элемента checkbox
  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. Получить список CheckBox 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

Смежные вопросы