1

Тема: як зробити щоб c# перевіряв 2 варіанти

Всім привіт та доброго дня )
в мене є код

wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath("//android.widget.Button[contains(@bounds, '[40,516][680,604]')]"))); //новий
driver.FindElementByXPath("//android.widget.Button[contains(@bounds, '[40,516][680,604]')]").Click(); //новий

в ньому є координати [40,516][680,604]
вони можуть змінюватися. можливо зробити так щоб якщо перший варіант не підходить то пошук йде по іншому ?
(проблема в том якщо по координатам нічого не знайшло перезапускається весь скріпт )

2

Re: як зробити щоб c# перевіряв 2 варіанти

не пойняв, у вас є набір координат, і вам потрібно перевірити щось по одним координатам, і якщо там нічо нема, то потім перевірити по іншим координатам?

3 Востаннє редагувалося Kotyara (27.07.2017 12:51:26)

Re: як зробити щоб c# перевіряв 2 варіанти

FakiNyan написав:

не пойняв, у вас є набір координат, і вам потрібно перевірити щось по одним координатам, і якщо там нічо нема, то потім перевірити по іншим координатам?

так, а якщо точніше там кнопка координати кнопки, в її є 2 місця знаходження

4

Re: як зробити щоб c# перевіряв 2 варіанти

Пишіть по-людськи -- це координати однієї кнопки(координати двох кутів кнопки) чи координати двох кнопок. Якщо двох, то координати чого це - кута/центру й тоді вкажіть ширину/довжини кнопок.

Подякували: leofun011

5

Re: як зробити щоб c# перевіряв 2 варіанти

0xDADA11C7 написав:

Пишіть по-людськи -- це координати однієї кнопки(координати двох кутів кнопки) чи координати двох кнопок. Якщо двох, то координати чого це - кута/центру й тоді вкажіть ширину/довжини кнопок.

це координати однієї кнопки(координати двох кутів кнопки)

6

Re: як зробити щоб c# перевіряв 2 варіанти

wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath("//android.widget.Button[contains(@bounds, '[40,516][680,604]')]")));

повертає true або false?
занесіть координати кнопок в масивчик, а потім в циклі підставляйте їх і перевіряйте, якщо повертає true, то робіть

break;

7

Re: як зробити щоб c# перевіряв 2 варіанти

Або булевим оператором ||

8

Re: як зробити щоб c# перевіряв 2 варіанти

0xDADA11C7 написав:

Або булевим оператором ||

тобто так ?

wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath("//android.widget.Button[contains(@bounds, '[40,516][680,604]')]"))); //новий
driver.FindElementByXPath("//android.widget.Button[contains(@bounds, '[40,516][680,604] || [40,498][680,604 ')]").Click(); //новий

9

Re: як зробити щоб c# перевіряв 2 варіанти

Ні, булевий оператор має бути в С# коді

Подякували: LoganRoss, leofun012

10

Re: як зробити щоб c# перевіряв 2 варіанти

FakiNyan написав:
wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath("//android.widget.Button[contains(@bounds, '[40,516][680,604]')]")));

повертає true або false?
занесіть координати кнопок в масивчик, а потім в циклі підставляйте їх і перевіряйте, якщо повертає true, то робіть

break;

на рахунок break; я зрозумів
напевно це

class BreakTest
{
    static void Main()
    {
        for (int i = 1; i <= 100; i++)
        {
            if (i == 5)
            {
                break;
            }
            Console.WriteLine(i);
        }

        // Keep the console open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

я ніяк не можу зрозуміти як

wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath("//android.widget.Button[contains(@bounds, '[40,516][680,604]')]")));

повертає "true" або "false"
я не бачу змінної :(

11

Re: як зробити щоб c# перевіряв 2 варіанти

а, то воно повертає хвункцію
https://seleniumhq.github.io/selenium/d … atedBy.htm
а wait.Until що повертає?

12 Востаннє редагувалося FakiNyan (01.08.2017 10:11:15)

Re: як зробити щоб c# перевіряв 2 варіанти

я так думою, що мона почарувати з By.XPath
типу якось так

"//android.widget.Button[contains(@bounds, '[40,516][680,604]' or '[а тут ще одні][координати]')]"

13

Re: як зробити щоб c# перевіряв 2 варіанти

FakiNyan написав:

а, то воно повертає хвункцію
https://seleniumhq.github.io/selenium/d … atedBy.htm
а wait.Until що повертає?

наскільки я розумію то або "так" , або "ні"  це функція пошуку кнопки, якщо воно її знаходить, то переходить до виконання дій з нею (використовую для очікування завантаження сторінки)
не маю уявлення як глянути що саме повертає :(
(тільки днів 5 займаюсь цім свідомо )

14

Re: як зробити щоб c# перевіряв 2 варіанти

або так

"//android.widget.Button[contains(@bounds, '[40,516][680,604]') or contains(@bounds, '[40,516][680,604]')]"

15 Востаннє редагувалося Kotyara (01.08.2017 10:17:49)

Re: як зробити щоб c# перевіряв 2 варіанти

FakiNyan написав:

або так

"//android.widget.Button[contains(@bounds, '[40,516][680,604]') or contains(@bounds, '[40,516][680,604]')]"

тобто весь код буде так ?

wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath("//android.widget.Button[contains(@bounds, '[40,516][680,604]') or contains(@bounds, '[40,516][680,608]')]"))); //новий
driver.FindElementByXPath("//android.widget.Button[contains(@bounds, '[40,516][680,604]') or contains(@bounds, '[40,516][680,608]')]").Click(); //новий

16

Re: як зробити щоб c# перевіряв 2 варіанти

ну спробуйте, я хз, чи воно спрацює

17

Re: як зробити щоб c# перевіряв 2 варіанти

FakiNyan написав:

ну спробуйте, я хз, чи воно спрацює

шкода , але ні , не працює просто помилка

18

Re: як зробити щоб c# перевіряв 2 варіанти

і шо за помилка?

19

Re: як зробити щоб c# перевіряв 2 варіанти

FakiNyan написав:

і шо за помилка?

нічого не показує , просто пише що помилка
а можливо якось так зробити ?
ось код я знаю що він не правильний
просто для приладу

   class sharp
    {
        static bool kord;
        static int kordik = 40;
        static int kordik1 = 40;
        static int kordik2 = 518;
        static int kordik3 = 680;
        static int kordik4 = 606;
        static int kordik5 = 608;
        static string st1;

        public static void Main()

        {
            st1 = ("[" + kordik + "," + kordik2 + "]" + "[" + kordik3 + "," + kordik4 + "]");
            st2 = ("[" + kordik + "," + kordik2 + "]" + "[" + kordik3 + "," + kordik5 + "]");
            switch (kord = st1)
            {
                case true:
                    kordik = st1;
                    break;
                case false:
                    kordik = st2;
                    break;
                        
            }

тобто що б перевіряло чи сходяться координати по першому варіанту , якщо ні то що б підставляло другий варіант  ?

20

Re: як зробити щоб c# перевіряв 2 варіанти

Kotyara написав:

просто для приладу

компілятор ваші помилки не завжди парсить як люди