Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
BraintreeCc.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Mtf\Client\Locator;
10 use Magento\Mtf\Client\Element\SimpleElement;
11 use Magento\Mtf\Fixture\FixtureInterface;
12 use Magento\Mtf\ObjectManager;
14 
18 class BraintreeCc extends PaymentCc
19 {
25  protected $braintreeForm = [
26  "cc_number" => "//*[@id='braintree-hosted-field-number']",
27  "cc_exp_month" => "//*[@id='braintree-hosted-field-expirationMonth']",
28  "cc_exp_year" => "//*[@id='braintree-hosted-field-expirationYear']",
29  "cc_cid" => "//*[@id='braintree-hosted-field-cvv']",
30  ];
31 
37  protected $errorSelector = "/../../div[@class='hosted-error']";
38 
46  public function fill(FixtureInterface $fixture, SimpleElement $element = null)
47  {
48  $this->braintreeForm = array_intersect_key($this->braintreeForm, $fixture->getData());
49  $mapping = $this->dataMapping($fixture->getData());
50  foreach ($this->braintreeForm as $field => $iframe) {
51  $element = $this->browser->find('body');
52  $this->browser->waitUntil(
53  function () use ($element, $iframe) {
54  $fieldElement = $element->find($iframe, Locator::SELECTOR_XPATH);
55  return $fieldElement->isVisible() ? true : null;
56  }
57  );
58  $iframeLocator = ObjectManager::getInstance()->create(
59  Locator::class,
60  [
61  'value' => $iframe,
62  'strategy' => Locator::SELECTOR_XPATH
63  ]
64  );
65  $this->browser->switchToFrame($iframeLocator);
66  $element = $this->browser->find('body');
67  $this->browser->waitUntil(
68  function () use ($element) {
69  $fieldElement = $element->find('input');
70  return $fieldElement->isVisible() ? true : null;
71  }
72  );
73  $this->_fill([$mapping[$field]], $element);
74  $this->browser->switchToFrame();
75  }
76  }
77 
84  public function getVisibleMessages(array $messages)
85  {
86  $textMessages = [];
87  foreach (array_keys($messages) as $field) {
88  $selector = $this->braintreeForm[$field] . $this->errorSelector;
89  $errorElement = $this->_rootElement->find($selector, Locator::SELECTOR_XPATH);
90  $textMessages[$field] = $errorElement->isVisible() ? $errorElement->getText() : null;
91  }
92 
93  return $textMessages;
94  }
95 }
fill(FixtureInterface $fixture, SimpleElement $element=null)
Definition: BraintreeCc.php:46
$element
Definition: element.phtml:12