Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 11:13

    asolntsev on master

    remove the flaky test that depe… (compare)

  • 10:52

    asolntsev on v5.22.1

    (compare)

  • 10:51

    asolntsev on master

    fix flaky test: be sure to down… add space to the error message … selenide 5.22.1: Add mime type … (compare)

  • 07:34
    sanchek synchronize #1297
  • 06:37

    asolntsev on master

    upgrade to LittleProxy 2.0.4 (compare)

  • 06:27
    asolntsev closed #1476
  • 06:27
    asolntsev commented #1476
  • 05:13
    asolntsev commented #1486
  • Jun 17 20:28
    asolntsev labeled #1486
  • Jun 17 17:11
    jaanj85 closed #1487
  • Jun 17 03:24
    jaanj85 edited #1487
  • Jun 17 03:22
    jaanj85 edited #1487
  • Jun 17 03:21
    jaanj85 edited #1487
  • Jun 17 03:19
    jaanj85 edited #1487
  • Jun 17 03:19
    jaanj85 opened #1487
  • Jun 16 16:00
    PavelOnz opened #1486
  • Jun 16 05:50

    asolntsev on master

    working on Selenide 5.23.0 (compare)

  • Jun 14 19:29

    asolntsev on master

    upgrade to Gradle 7.1 (compare)

  • Jun 14 15:14
    dbudim commented #1478
  • Jun 14 07:30
    dbudim synchronize #1478
tngii
@tngii

Probably you have some custom code for opening a webdriver?
no customization, it's full example code:

```
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.FileDownloadMode;
import com.codeborne.selenide.Selenide;
import org.testng.annotations.Test;

public class test {

@Test
public void httpsWithEnabledProxy() {
    Configuration.proxyEnabled = true;
    Configuration.fileDownload = FileDownloadMode.PROXY;
    Selenide.open("https://google.com/");
    //Result (Failed): This site can’t be reached
}

@Test
public void httpsWithoutProxy() {
    Configuration.proxyEnabled = false;
    //Configuration.fileDownload = FileDownloadMode.PROXY;
    Selenide.open("https://google.com/");
    //Result (Passed)
}

}
'''
selenide - 5.13.0

Andrei Solntsev
@asolntsev
@tngii Nope. I just tried your code - works for me. Both with proxy and without proxy.
Could you please provide a full sample project on github, so that we could reproduce the problem?
tngii
@tngii
@asolntsev i tried to create example repo on github, but.. it works fine (i mean all tests passed).. i don't understand what is wrong with my working project
Andrei Solntsev
@asolntsev
@tngii you can enable webdriver logs (something like Configuration.webdriverLogs=true;) and double-check browser arguments.
Arsen Papoyan
@arsen.papoyan:matrix.org
[m]
Hi @asolntsev
I want to test if a radio button is selected.
The shouldBe(selected) method cannot be used, because there is no Selected property. So I decided to use JS execution in this case.
I've tried this:
Selenide.executeJavaScript("document.querySelector('#mat-radio-2-input').checked")
and how to continue to assert true or false for this?
Can you please help?
Andrei Solntsev
@asolntsev

@arsen.papoyan:matrix.org Sure, just use “return” inside of JS. Something like this:

boolean isChecked = Selenide.executeJavaScript(“return document.querySelector('#mat-radio-2-input').checked”);
assertThat(isChecked).isTrue();

P.S. Selenide has method getSelectedRadio, see working examples here: https://github.com/selenide/selenide/blob/master/statics/src/test/java/integration/RadioTest.java

Arsen Papoyan
@arsen.papoyan:matrix.org
[m]
@asolntsev: Well thank you.
I would just not want to use the Assertion API 🙂, but if there is no other option, then so.
Andrei Solntsev
@asolntsev
I agree, it would be great to add a Selenide-style api for checking radio buttons. Do you have a concrete idea how it could look like?
Andrei Solntsev
@asolntsev
@arsen.papoyan:matrix.org I found a Selenide-style check without Assertion API:
  @Test
  void assertCheckedRadioButton() {
    $(byName("me")).selectRadio("margarita");
    $("[name=me][value=margarita]").shouldBe(checked);
    $("[name=me][value=margarita]").shouldHave(attribute("checked")); // just an alternative
  }
Arsen Papoyan
@arsen.papoyan:matrix.org
[m]
@asolntsev:
That also doesn't work in my case, because only the class name is changed (mat-radio-checked is being added), but I don't want to check the selection in this way, for example, attribute class shouldhave "mat-radio-checked", I guess that's not good practice).
Do you have any idea?
Andrei Solntsev
@asolntsev
Ok, I see your “radio” button is not a standard html radio button, but some custom component.
Selenide cannot handle all possible custom components in the world, right?
You can use something like $.shouldHave(cssClass(“mat-radio-checked”)), why not?
You can also create your custom Condition and use it in all your tests:
  public static final Condition matChecked = Condition.cssClass(“mat-radio-checked”);

  $.shouldBe(matChecked);
Arsen Papoyan
@arsen.papoyan:matrix.org
[m]

asolntsev (Andrei Solntsev):
I got you.
We have handled it in this way:

private MyPage radioButtonCheck(SelenideElement element, int index) {
        Checked myChecked = new Checked() {
            @Override
            public boolean apply(Driver driver, WebElement element) {
                String f = String.format("return document.querySelectorAll('[type=radio]')[%s].checked", index);
                return Selenide.executeJavaScript(f);
            }
        };
        element.shouldBe(myChecked);
        return this;
    }

    @Step
    public MyPage depositCheck() {
        depositRadioButton.click();
        radioButtonCheck(depositRadioButton, 0);
        return this;
    }

Now I can use "radioButtonCheck" method for all radio buttons.
What do you think?

Andrei Solntsev
@asolntsev
Well, yes, you can check.
Vlad-Titov
@Vlad-Titov

Not sure if this is a right place to ask but I'm getting following error when I'm trying to run tests
com/codeborne/selenide/Configuration java.lang.NoClassDefFoundError: com/codeborne/selenide/Configuration at configuration.TestBaseClass.SetUpAll(TestBaseClass.java:12) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
Using gradle 7.0 I have following dependencies:

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testImplementation 'com.browserup:browserup-proxy-core:2.1.2'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
    testCompileOnly 'com.codeborne:selenide:5.20.1'
    testCompileOnly 'org.apache.logging.log4j:log4j-api:2.14.1'
    testCompileOnly 'org.apache.logging.log4j:log4j-core:2.14.1'
    testCompileOnly 'org.apache.logging.log4j:log4j-slf4j-impl:2.14.1'
}

test {
    useJUnitPlatform()

    reports {
        junitXml.enabled = true
        html.enabled = false
    }
}

Any ideas why it's not being initialized?

Andrei Solntsev
@asolntsev
@Vlad-Titov You need to read all the logs and find the very first error.
Typically NoClassDefFoundError: com/codeborne/selenide/Configuration means that some error happened during the initialization of class Configuration, that’s why JVM could initialize this class. Since then, every call to Configuration throws NoClassDefFoundError.
Vlad-Titov
@Vlad-Titov
Thanks for the answer. The problem was in testCompileOnly 'com.codeborne:selenide:5.20.1', it has to be testImplementation
blick882
@blick882

Hi!
I'm trying to use Selenide for mobile apps(this one is for iOS). Cannot scroll down to the element

    open fun `open login page`(): HowToPage {
        LOGIN_BUTTON.scrollIntoView(true)
        LOGIN_BUTTON.shouldBe(appear)
        LOGIN_BUTTON.click()
        return HowToPage()
    }

It fails and says

Element not found {By.id: Log in}

But the element is clickable and visible to other methods. click() works fine.
How can I just scroll down?

Andrei Solntsev
@asolntsev
@blick882 I guess $.scrollIntoView is web-specific and does not work in mobile apps. You need to Google how to scroll in appium.
Madhu Palagani
@MadhuPalagani_twitter
image.png
Please help me to resolve below
Is it possible to handle (allow/block) the location popup for chrome
By using any configuration setting
Andrei Solntsev
@asolntsev
Afaik you cannot click “Allow” or “Block”.
Instead, you need to enable or disable location by some chrome options when you start a webdriver.
brandonrock919
@brandonrock919

Hi,
I have an issue i want to upload image to website on remote selenoid machine
on selenium this code worked for me

        ((RemoteWebElement) profilePic).setFileDetector(new LocalFileDetector());
        profilePic.sendKeys(profileImage);

but no i dont have idea why its not working
anyone maybe can assist please ?

Andrei Solntsev
@asolntsev
@brandonrock919 Selenide uses the same code by default.
Andrei Solntsev
@asolntsev
Released Selenide 5.21.0: “Say no to duplicates!”
https://selenide.org/2021/05/15/selenide-5.21.0/
brandonrock919
@brandonrock919
@asolntsev maybe there is a issue i tried everything
when i am using selenoid docker with selenide its not uploading the file to the webiste
Andrei Solntsev
@asolntsev
@brandonrock919 You probably open webdriver by yourself?
Andrei Solntsev
@asolntsev
then you need to use LocalFileDetector:
      RemoteWebDriver webDriver = new RemoteWebDriver(toURL("http://localhost:4444/wd/hub"), options);
      webDriver.setFileDetector(new LocalFileDetector());
Boris Osipov
@BorisOsipov
@brandonrock919 also please describe what "its not working" exactly means. can you show error stacktrace?
Sajan
@woodsongem
Hello All,
I creating POC using selenide and trying to implement screenshot and video recored. screenshot is working and not able to find record video. please let me know something wrong in below code.
 ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.addArguments("--ignore-ssl-errors=yes", "--ignore-certificate-errors", "--start-maximized");
            chrome = new BrowserWebDriverContainer()
                    .withRecordingMode(BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL,
                            new File("./target/"))
                    .withCapabilities(DesiredCapabilities.chrome())
                    .withCapabilities(chromeOptions);
     if (!chrome.isRunning()) {
                chrome.start();
            }
            RemoteWebDriver driver = chrome.getWebDriver();
            WebDriverRunner.setWebDriver(driver);
Andrei Solntsev
@asolntsev
@woodsongem It seems your question is about TestContainer rather than Selenide.
Though, here you can find some examples of using Selenide with TestContainers: https://github.com/selenide-examples/testcontainers/tree/master/src/test/java/org/selenide/examples
Sajan
@woodsongem
thanks @asolntsev for your response. earlier I refer same repo and not able to identify issue.
one change I tried is new File("build") to new File("./target/")
Sajan
@woodsongem
Hello @asolntsev : how to upload file in Selenide using test container?
Andrei Solntsev
@asolntsev
@woodsongem Exactly the same as any other upload: $(“input”).uploadFile(…);
Sajan
@woodsongem

thanks @asolntsev for your response. I did same and getting below error.

Caused by: InvalidArgumentException: invalid argument: File not found :

file is outside of project and using Selenide with testContainer.

Andrei Solntsev
@asolntsev
It depends on how you create a webdriver. It's important to set LocalFileDetector if you create RemoteWebDriver by yourself.
Sajan
@woodsongem
thanks @asolntsev for your response. I am using BrowserWebDriverContainer and below is the sample code. not sure how to set setFileDetector
ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.addArguments("--ignore-ssl-errors=yes", "--ignore-certificate-errors", "--start-maximized");
            chrome = new BrowserWebDriverContainer()
                    .withRecordingMode(BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL,
                            new File("delete"),
                            VncRecordingContainer.VncRecordingFormat.MP4)
                    .withCapabilities(DesiredCapabilities.chrome())
                    .withCapabilities(chromeOptions);
                chrome.beforeTest(new TestDescriptionImpl());
                chrome.start();
Sajan
@woodsongem
thanks @asolntsev . it's worked and took little more time to identify the driver.
chrome.getWebDriver().setFileDetector(new LocalFileDetector());
Andrei Solntsev
@asolntsev
Guys, we have an anniversary release Selenide 5.22.0!
  • #1479 make it possible to check an alert before downloading a file -- see PR #1481
  • #1482 Add support for Condition.textCaseSensitive for selected options in select element -- thanks to Oleg Berezhnoy
  • #1380 Add selectors byTextCaseInsensitive and withTextCaseInsensitive -- see PR #1381
  • #1483 add method Driver.getSessionId() -- thanks to Petro Ovcharenko
  • override default Selenium http timeouts -- see PR #1433
  • #1472 refactoring: pass WebElementSource instead of SearchContext
Vladislav Voronin
@vrnvorona
Hi. I have weird problem with Safari. It won't click, or will click only once and then will throw TimeoutException. Chrome/Firefox is perfect.
Vladislav Voronin
@vrnvorona
Caused by: TimeoutException: at com.codeborne.selenide.ex.UIAssertionError.wrapToUIAssertionError(UIAssertionError.java:83) at com.codeborne.selenide.ex.UIAssertionError.wrapThrowable(UIAssertionError.java:74) at com.codeborne.selenide.ex.UIAssertionError.wrap(UIAssertionError.java:68) at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:90) at com.sun.proxy.$Proxy15.click(Unknown Source)
Andrei Solntsev
@asolntsev

Released Selenide 5.22.0:

Wake up, we have a release again!

https://selenide.org/2021/06/08/selenide-5.22.0/

Kristoffer
@krsg
Hi, I have a problem using source() with Firefox. The web page I'm testing contains some <!-- comments --> right beneath the closing html tag that I need. When using source() with Firefox those comments are missing. It works with Chrome. Does anybody know why they are missing?