Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 16:00
    PavelOnz opened #1486
  • 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
  • Jun 14 06:57
    dbudim synchronize #1478
  • Jun 12 19:19
    dbudim synchronize #1478
  • Jun 12 19:18
    dbudim synchronize #1478
  • Jun 12 16:47
    dbudim synchronize #1478
  • Jun 12 16:42
    dbudim synchronize #1478
  • Jun 12 13:40
    dbudim synchronize #1478
  • Jun 12 13:35
    dbudim synchronize #1478
  • Jun 12 12:37
    mac2000 commented #525
  • Jun 12 12:34
    mac2000 commented #300
  • Jun 11 06:49

    rosolko on master

    Bump org.sonarqube from 3.2.0 t… (compare)

  • Jun 11 06:49

    rosolko on gradle

    (compare)

  • Jun 11 06:49
    rosolko closed #1485
  • Jun 11 05:11
    dependabot[bot] labeled #1485
  • Jun 11 05:11

    dependabot[bot] on gradle

    Bump org.sonarqube from 3.2.0 t… (compare)

  • Jun 11 05:11
    dependabot[bot] opened #1485
tann200
@tann200
I have seen issues reported with Allure logging out passwords
now well, happening for me aswell. Is there any way to hide some selenide inputs from Allure reporting?
Andrei Solntsev
@asolntsev
Hi @tann200 .
No, Selenide currently doesn’t have methods for hiding passwords in Allure report.
@tann200 I would ask you, why do you need it? It’s just a password from test environment. It’s anyway available for all QA engineers. Why should you hide it?
Andrei Solntsev
@asolntsev
@tann200 btw, we already had such a pull request: selenide/selenide#948
tann200
@tann200
@asolntsev even if it is a test environment, then for cyberhygiene sake, it would be reasonable to not show them out in bamboo reports
Andrei Solntsev
@asolntsev
@tann200 sorry, I still don't understand. What is the real need?
If somebody is not allowed to see information about test environment, I believe he also should not be allowed to see bamboo. No?
tngii
@tngii

Hi. Our tests use proxyEnabled for FileDownload (without proxy downloading doesn't work). But site with https protocol can't be open.

For example:

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)
}

How to solve this issue?

Andrei Solntsev
@asolntsev
Usually proxy works fine with https sites because Selenide adds setting "accept all certs" (or something similar) when starting a webdriver.
Probably you have some custom code for opening a webdriver?
Another solution would be using FOLDER download mode instead of PROXY.
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/")