> For the complete documentation index, see [llms.txt](https://gemphonefarm.gitbook.io/gemphonefarm-book-1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gemphonefarm.gitbook.io/gemphonefarm-book-1/huong-dan-su-dung/publish-your-docs/control-flow/conditions.md).

# Conditions

Khi node được thực thi, nó sẽ kiểm tra mỗi điều kiện được bạn thêm vào. Nếu nó khớp với điều kiện, quy trình sẽ thực hiện node được kết nối với đầu ra của điều kiện. Nếu nó không khớp, quy trình sẽ thực thi với node được kết nối với đầu ra

<figure><img src="/files/xABIZtCVYn4VoTATy3Q4" alt=""><figcaption></figcaption></figure>

Tạo điều kiện cho phép bạn xây dựng các câu lệnh điều kiện trong quy trình của mình. Nó có thể được sử dụng để kiểm soát luồng bằng cách sử dụng node `Điều kiện` hoặc `Lặp điều kiện`. Bạn có thể thêm node điều kiện bằng cách nhấn vào nút bấm `Thêm điều kiện`. Ngoài ra bạn còn có thể thêm nhiều điều kiện dưới dạng

* **Và**: Thoả mãn `tất cả` các điều kiện được đưa ra mới được thực hiện node nối với đường ra `Path 1`
* **Hoặc**: Thoả mãn `1 trong` các điều kiện được đưa ra mới được thực hiện node nối với đường ra `Path 1`

### Kiểu dữ liệu so sánh[​](https://docs.omnilog.in/reference/condition-builder.html#kieu-du-lieu-so-sanh) <a href="#kieu-du-lieu-so-sanh" id="kieu-du-lieu-so-sanh"></a>

#### Value[​](https://docs.omnilog.in/reference/condition-builder.html#value) <a href="#value" id="value"></a>

Đối với giá trị bạn muốn so sánh, bạn có thể viết biểu thức bên trong trường văn bản.**Value**: các loại giá trị thông thường như chữ, số,...

* Tiền tố giá trị: Tiền tố này là quy ước dùng để chỉ ra kiểu dữ liệu của một giá trị. Nó có thể được sử dụng để chuyển đổi một giá trị sang kiểu dữ liệu tương ứng. Ví dụ: tiền tố "string::" có thể được sử dụng để chuyển đổi một giá trị thành một loại chuỗi và "number::" có thể được sử dụng để chuyển đổi một giá trị thành loại số. Bạn có thể thêm các tiền tố sau:

  * `string::`: chuyển đổi giá trị thành chuỗi.
  * `json::`: chuyển đổi giá trị thành JSON.
  * `number::`: chuyển đổi giá trị thành số.
  * `boolean::`: chuyển đổi giá trị thành boolean.

  <figure><img src="/files/iYGdmC2HcKAUGmMfLWQd" alt=""><figcaption></figcaption></figure>

**Data exist**: Kiểm tra xem dữ liệu có tồn tại hay không.&#x20;

<figure><img src="/files/f98vbb6sHhozzIhIOBZ6" alt=""><figcaption></figcaption></figure>

#### Element[​](https://docs.omnilog.in/reference/condition-builder.html#element) <a href="#element" id="element"></a>

Sử dụng bộ chọn để lấy CSS selector hoặc XPath của phần tử

**Element text**[**​**](https://docs.omnilog.in/reference/condition-builder.html#element-text)

* So sánh một phần tử văn bản dựa trên CSS selector hoặc XPath của phần tử đó
  * **So sánh với**: [value](#value), element text, [element attribute value](#value)

<figure><img src="/files/K3zKOml0UE3wyz8bU9A7" alt=""><figcaption></figcaption></figure>

**Element exist**[**​**](https://docs.omnilog.in/reference/condition-builder.html#element-exist)

* Kiểm tra phần tử `có` tồn tại thông qua CSS selector hoặc XPath của phần tử đó.

**Element not exist**[**​**](https://docs.omnilog.in/reference/condition-builder.html#element-not-exist)

* Kiểm tra phần tử `không` tồn tại thông qua CSS selector hoặc XPath của phần tử đó.

**Element visible**[**​**](https://docs.omnilog.in/reference/condition-builder.html#element-visible)

* Kiểm tra phần tử `có hiển thị` thông qua CSS selector hoặc XPath của phần tử đó

**Element visible in screen**[**​**](https://docs.omnilog.in/reference/condition-builder.html#element-visible-in-screen)

* Kiểm tra phần tử `có hiển thị trên màn hình` thông qua CSS selector hoặc XPath của phần tử đó

**Element hidden in screen**[**​**](https://docs.omnilog.in/reference/condition-builder.html#element-hidden-in-screen)

* Kiểm tra phần tử `không hiển thị trên màn hình` thông qua CSS selector hoặc XPath của phần tử đó

**Element attribute value**[**​**](https://docs.omnilog.in/reference/condition-builder.html#element-attribute-value)

* So sánh giá trị thuộc tính với các giá trị value, element text, element attribute value.

### Kiểu so sánh[​](https://docs.omnilog.in/reference/condition-builder.html#kieu-so-sanh) <a href="#kieu-so-sanh" id="kieu-so-sanh"></a>

#### Basic[​](https://docs.omnilog.in/reference/condition-builder.html#basic) <a href="#basic" id="basic"></a>

* **Equal**: so sánh `bằng` giữa hai vế phân biệt hoa, thường. Ví dụ: `Minh` không bằng `minh`
* **Equal(case insensitive)**: so sánh không phân biệt hoa, thường. Ví dụ: `Minh` bằng `minh`
* **Not equal**: so sánh sự khác nhau giữa hai vế.

#### Number[​](https://docs.omnilog.in/reference/condition-builder.html#number) <a href="#number" id="number"></a>

* **Greater than**: so sánh vế trên lớn hơn vế dưới
* **Greater than or equal**: so sánh vế trên lớn hơn hoặc bằng vế dưới
* **Less than**: so sánh vế trên nhỏ hơn vế dưới
* **Less than or equal**: so sánh vế trên nhỏ hơn hoặc bằng vế dưới

#### Text[​](https://docs.omnilog.in/reference/condition-builder.html#text) <a href="#text" id="text"></a>

* **Contains**: kiểm tra không phân biệt chữ hoa thường của vế trên chứa văn bản vế dưới.&#x20;

-Ví dụ: `google.com` không nằm trong `goOgle.com/abc`

* **Contains (case insensitive)**: so sánh không phân biệt chữ hoa thường vế trên chứa vế dưới.&#x20;

-Ví dụ: `goOgle.com` nằm trong `goOgle.com/abc`

* **Not contains**: so sánh phân biệt chữ hoa thường vế trên không nằm trong vế dưới.&#x20;

-Ví dụ: `google.com` không nằm trong `goOgle.com/abc`

* **Not contains (case insensitive)**: so sánh phân biệt chữ hoa thường vế trên không nằm trong vế dưới.&#x20;

-Ví dụ: `google.com` không nằm trong `goOgle2.com/abc`

* **Starts with**: so sánh phân biệt hoa thường văn bản ở vế trên có bắt đầu với cụm từ ở vế dưới không.

-Ví dụ: `gooleMe.com` bắt đầu bằng cụm từ `google`

* **Ends with**: so sánh phân biệt hoa thường văn bản ở vế trên có kết thúc với cụm từ ở vế dưới không.&#x20;

-Ví dụ: `gooleMe.com` bắt đầu bằng cụm từ `com`

* **Match with RegEx**: so sánh phân biệt hoa thường văn bản ở vế trên có trùng khớp với RegEx bên dưới vế dưới không.&#x20;

-Ví dụ: `123456` trùng khớp với đoạn RegEx `\b[0-9]{6}\b`

#### Boolean[​](https://docs.omnilog.in/reference/condition-builder.html#boolean) <a href="#boolean" id="boolean"></a>

* **Is truthy**: Giá trị nhập khi chuyển đổi sang giá trị boolean là true. Ví dụ: `abc` là giá trị Truthy
* **Is falsy**: Giá trị nhập khi chuyển đổi sang giá trị boolean là false. Ví dụ: `number::0` là giá trị Falsy

Chú ý

Để phân biệt đâu là các giá trị Truthy hay Falsy thì xem tại [đây](https://viblo.asia/p/boolean-trong-javascript-E375zPQ1ZGW#_2-tim-hieu-ve-truthy-va-falsy-1)
