RadiobuttonElement.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Mtf\Client\Element;
  7. use Magento\Mtf\Client\Locator;
  8. /**
  9. * Class provides ability to work with page element radio button.
  10. */
  11. class RadiobuttonElement extends SimpleElement
  12. {
  13. /**
  14. * Label for radio button selector.
  15. *
  16. * @var string
  17. */
  18. protected $labelSelector = './..//label[contains(., "%s")]';
  19. /**
  20. * Selector for selected label.
  21. *
  22. * @var string
  23. */
  24. protected $selectedLabelSelector = 'input[type=radio]:checked + label';
  25. /**
  26. * Get value of the required element.
  27. *
  28. * @return string
  29. */
  30. public function getValue()
  31. {
  32. $this->eventManager->dispatchEvent(['get_value'], [$this->getAbsoluteSelector()]);
  33. return $this->find($this->selectedLabelSelector)->getText();
  34. }
  35. /**
  36. * Select radio button based on label value.
  37. *
  38. * @param string $value
  39. * @return void
  40. */
  41. public function setValue($value)
  42. {
  43. $this->eventManager->dispatchEvent(['set_value'], [__METHOD__, $this->getAbsoluteSelector()]);
  44. $radioButtonLabel = $this->find(sprintf($this->labelSelector, $value), Locator::SELECTOR_XPATH);
  45. if (!$this->isSelected()) {
  46. $radioButtonLabel->click();
  47. }
  48. }
  49. }