11 use Magento\Mtf\Client\Locator;
12 use Magento\Mtf\Fixture\FixtureInterface;
13 use Magento\Mtf\Client\Element\SimpleElement;
40 private $tierPricesSelector =
'.prices-tier li';
47 private $configurableOptionElement =
'#product-options-wrapper > * > .configurable';
60 ?
$product->getConfigurableAttributesData()[
'attributes_data']
67 if (!isset($listOptions[
$title])) {
68 throw new \Exception(
"Can't find option: \"{$title}\"");
73 $typeMethod = preg_replace(
'/[^a-zA-Z]/',
'',
$option[
'frontend_input']);
74 $getTypeData =
'get' . ucfirst(strtolower($typeMethod)) .
'Data';
97 public function getOptionsPrices(FixtureInterface
$product)
101 $productVariations = [];
102 if (
$product->hasData(
'configurable_attributes_data')) {
104 $productVariations =
$product->getConfigurableAttributesData()[
'matrix'];
107 $productVariations = array_keys($productVariations);
109 foreach ($productVariations as $variation) {
110 $variationOptions = explode(
' ', $variation);
140 private function getOptionTierPrices()
143 $tierPricesNodes = $this->_rootElement->getElements($this->tierPricesSelector);
144 foreach ($tierPricesNodes as $node) {
145 preg_match(
'#^[^\d]+(\d+)[^\d]+(\d+(?:(?:,\d+)*)+(?:.\d+)*).*#i', $node->getText(), $matches);
147 'qty' => isset($matches[1]) ? $matches[1] :
null,
148 'price_qty' => isset($matches[2]) ? $matches[2] :
null,
163 \
Magento\Catalog\Test\Block\Product\Price::class,
164 [
'element' => $this->_rootElement->find($this->priceBlock)]
177 $this->_rootElement->find(sprintf($this->optionSelector, $attributeTitle), Locator::SELECTOR_XPATH,
'select')
178 ->setValue($optionTitle);
191 foreach ($variationOptions as $variationSelection) {
208 $optionElements = $this->_rootElement->getElements($this->configurableOptionElement);
224 return $this->_rootElement->find($this->optionsContext, Locator::SELECTOR_XPATH)->isVisible();
234 public function selectConfigurableOption(FixtureInterface
$product, $variation)
238 $productVariations = [];
239 if (
$product->hasData(
'configurable_attributes_data')) {
241 $productVariations =
$product->getConfigurableAttributesData()[
'matrix'];
243 if (array_key_exists($variation, $productVariations)) {
244 $variationOption = explode(
' ', $variation);
chooseOptions($variationOptions, $attributesData)
getPriceBlock(FixtureInterface $product=null)
getOptions(FixtureInterface $product=null)
selectOption($attributeTitle, $optionTitle)