t.me/atinfo_chat Telegram группа по автоматизации тестирования

Selenium не срабатывают условия , при срабатывании CheckBox

Теги: #<Tag:0x00007f7489c6a0c0> #<Tag:0x00007f7489c69f30> #<Tag:0x00007f7489c69c88> #<Tag:0x00007f7489c69b70> #<Tag:0x00007f7489c69a30> #<Tag:0x00007f7489c69968> #<Tag:0x00007f7489c69878>

Добрый день! Проблема заключается в следующем. Есть условие - если IS SELECTED вернет FALSE то мы нажимаем на CheckBox, чтобы его выделить, если он уже выделен то нам на него кликать не надо (возвращаем TRUE) .

Я попытался менять Xpath уже все возможные варианты. Если ссылаюсь непосредственно на INPUT галочка не ставиться и вовсе. У меня была похожая проблема с методом IS SELECTED, она решилась // preceding-sibling :: input.

У меня не получилось вывести верный результат ( False,True).

Код

public class MainClass {

    static WebDriver driver;

    public static void  main (String[] args) {
    System.setProperty("webdriver.gecko.driver", "C:\\Users\\Kolya\\IdeaProjects\\test-selenium\\drivers\\geckodriver.exe");

        driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.manage().window().maximize();

         driver.get("https://www.allo.ua");
         driver.findElement(By.xpath("//div[@class='ssylki-katalog shadow-bottom']//a[@title='Смартфони']")).click();

         if  (!driver.findElement(By.xpath("//div[@class='filter-control']/label[text()='Apple']//preceding-sibling::input")).isSelected());
         driver.findElement(By.xpath("//a[@href='//allo.ua/ua/products/mobile/klass-kommunikator_smartfon/proizvoditel-apple/']//label[text()='Apple']")).click();

         if  (!driver.findElement(By.xpath("//div[@class='filter-control']/label[text()='Apple']//preceding-sibling::input")).isSelected());
         driver.findElement(By.xpath("//a[@href='//allo.ua/ua/products/mobile/klass-kommunikator_smartfon/proizvoditel-apple/']//label[text()='Apple']")).click();

Windows 10 Pro, Intellij Idea 11.0.6+8-b7265.25

Во-первых, конкретно вопрос не поставлен, просто описана проблема, нужно как то более правильно ставить вопрос и говорить, что ты хочешь.
Во-вторых, все возвращается true или false, просто у тебя блок if неправильно написан. Ты даже если мышкой наведешь на if (видишь ide его подсвечивает, не просто так) тебе подсказка должна помочь.
А вообще там просто напросто не хватает фигурных скобок.
Эта часть работает правильно

driver.findElement(By.xpath("//div[@class='filter-control']/label[text()='Apple']//preceding-sibling::input")).isSelected()
2 Симпатий

Спасибо за ответ! Ошибку с оператором if я исправил, скобки добавил, больше не светиться оператор. Но по прежджнему вывода True/ False нету.


         if  (!driver.findElement(By.xpath("//div[@class='filter-control']/label[text()='Apple']//preceding-sibling::input")).isSelected()) {
             driver.findElement(By.xpath("//label[text()='Apple']")).click();
         }
         if  (!driver.findElement(By.xpath("//div[@class='filter-control']/label[text()='Apple']//preceding-sibling::input")).isSelected()) {
             driver.findElement(By.xpath("//label[text()='Apple']")).click();
         }

А зачем тебе вывод true/false?
Тебе же нужно чтобы оно работало, если не стоит галка включало и наоборот, оно это и делает.

1 Симпатия