Обновленный ответ Кажется, что ваш оригинальный локатор в порядке, но ваша функция totalAmount
не возвращает правильное значение. Если вы хотите попробовать альтернативный подход к вашему локатору, чтобы получить цену, вы можете попробовать это, но ваш способ должен работать.
let price = element(by.css('.total-amount span')).isDisplayed()
.then(disp => {
return element(by.css('.total-amount span'));
})
.catch(err => {
return element(by.css('.total-amount'));
});
Оригинальный ответ
Вы используете 'ИЛИ' правильно, но ваш локатор не структурирован правильно.
Если мы сломаем этот локатор element(by.css('.total-amount span, .total-amount'));
, мы увидим, что есть два условия. Если первое удовлетворено, то оно будет возвращено. Если первое не удовлетворено, то второе будет возвращено, если оно будет найдено.
Однако, вы никогда не получите 30.50
, так как второе условие вернет сам элемент td
. Если вы хотите получить продажную цену, если она есть, но <s>
, если ее нет, тогда вам нужно будет запустить эту строку
element(by.css('.total-amount s, .total-amount span'))
Плохо и поэтому использует div просто для добавления горизонтального div. Вместо этого рассмотрите возможность помещения линии, которая выглядит как горизонтальное правило, в качестве границы элемента, который вы хотите разделить. Это будет семантически правильно, поскольку вы не влияете на структуру создаваемого вами HTML-документа.
В этой статье подробно рассматривается, как можно злоупотреблять div , используя их только как элементы представления. Хотя иногда этого не избежать, это не тот случай.
Я склонен согласиться с altCognito по этому вопросу, потому что они являются чисто презентационными (по крайней мере, они кажутся в каждом случае, в котором я их видел до сих пор), они должны быть применяется через CSS.
Вполне может быть опция : after {content: / * hr * /;}
, но, если честно, когда есть граница-дно, которое визуально служит (или, по крайней мере, может служить) той же цели, зачем беспокоиться о
?
Их, конечно, можно стилизовать, если вы решите пойти с ним, хотя W3 Schools предполагают, что все возможные варианты стилей теперь устарели. Если это так, и это не может быть «официально» разработано, было бы лучше избежать этого, я думаю.
Единственная проблема с HR - это то, что он всегда там. Я предполагаю, что ваш коллега считает, что вы не всегда хотите, чтобы отображался HR, и, используя DIV и решение css, давайте кто-нибудь удалим или изменим его в одном глобальном файле css. (хотя HR также может контролироваться css)
Решение div + css не плохое, но для того, что вы описываете, решение HR тоже неплохое. Я бы просто пошел с тем, что удобно в этом случае.