Как найти элементы, содержащие указанную строку c по xpath в php? - PullRequest
0 голосов
/ 07 января 2020

для автоматического теста c Я хочу, чтобы флажки строк, содержащих указанную строку c, были проверены. когда я ищу элементы в консоли по xpath, он находит именно те элементы, которые мне нужны, но когда я запускаю тесты, он проверяет все чекбоксы, независимо от того, содержат ли они эту строку.

Я думаю, что проблема заключается в функция:

public function iCheckCheckboxInRowsWith($col){

    $checkboxes = $this->getSession()->getPage()->findAll(
selector:'xpath',    
    sprintf('//table/tbody/tr[td[contains(text(), %s)]]/td/input[@type="checkbox"]',
    $col));    
    dump($checkboxes);    
    foreach( $checkboxes as $checkbox){    
        $checkbox->click();
    }

}

В терминале я вижу, что массив $ checkboxes (который я сбросил) состоит из всех флажков. Как я могу это исправить?

Ответы [ 3 ]

0 голосов
/ 07 января 2020

Вы можете использовать:

sprintf("//table/tbody/tr/td[contains(., '" +col+ "')]/input[@type='checkbox']"));
0 голосов
/ 08 января 2020

, хотя я в аннотации объявил, что $ col - это строка, мне все равно пришлось поставить% s в кавычки, поэтому:

//table/tbody/tr/td[contains(text(), "%s")]/preceding::td[1]/input[@type="checkbox"]

0 голосов
/ 07 января 2020

попробуйте следующий XPath. Это может работать.

sprintf('//table/tbody/tr/td[contains(text(), %s)]/input[@type="checkbox"]', $col)

или попробуйте следующее

sprintf('//table/tbody/tr/td[contains(., %s)]/input[@type="checkbox"]', $col)
...