• В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Орхан Гасанлы, Полный код. Я понял, в чем обстоит ошибка. Он ищет не на маркете элемент, он ищет его в яндексе. Почему он после перехода с яндекса на маркет продолжает работать с яндексом?

    System.setProperty("webdriver.chrome.driver","C:\\Users\\Admin\\Downloads\\chromedriver_win32\\chromedriver.exe");
    			driver= new ChromeDriver();
    
         	    //Браузер во весь экран
         	    driver.manage().window().maximize();
         	    
         	    //Открыть страничку яндекса
    			driver.get("https://yandex.ru/");
         	    
    			//Быть на страничке 10 секунд
    			//driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    			
    			
    			WebElement market = driver.findElement(By.linkText("Маркет"));
    			market.click();
    			
    			
    			WebDriverWait wait = new WebDriverWait(driver,15);
    			wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[4]/div/a")));
    			WebElement element = driver.findElement(By.xpath("//div[4]/div/a"));
    		    Actions builder = new Actions(driver);
    		    builder.moveToElement(element).perform();
    			element.click();
    			
    			
         	    //Ожидание 10 секунд перед закрытием браузера
         	    Thread.sleep(20000);
         	       
         	    //Закрыть браузер
         	    driver.quit();
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Орхан Гасанлы,
    WebDriverWait wait = new WebDriverWait(driver,5);
    			wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".services-new__list-item:nth-child(3) .services-new__item-title")));
    			WebElement element = driver.findElement(By.cssSelector(".services-new__list-item:nth-child(3) .services-new__item-title"));
    		    Actions builder = new Actions(driver);
    		    builder.moveToElement(element).perform();
    			
    			
    			
         	    //Ожидание 20 секунд перед закрытием браузера
         	    Thread.sleep(20000);
         	       
         	    //Закрыть браузер
         	    driver.quit();


    Попробовал таким вот образом. Все, ошибки нет. Но браузер закрывается, не сделав переход на нужную мне страничку.
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Орхан Гасанлы,
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    			
    			
    			WebElement market = driver.findElement(By.linkText("Маркет"));
    			market.click();
    			
    			WebDriverWait wait = new WebDriverWait(driver,10);
    			wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(@data-zone-data,'91542578')]//a")));
    			
    			WebElement electronika = driver.findElement(By.xpath("//*[contains(@data-zone-data,'91542578')]//a"));
    			electronika.click();


    Написал данный код, программа ждет, все. А потом снова вылезает ошибка, только уже дополненно:

    Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.xpath: //*[contains(@data-zone-data,'91542578')]//a (tried for 10 second(s) with 500 milliseconds interval)
    at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:95)
    at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:272)
    at newproject1.BrowserClass.main(BrowserClass.java:32)
    Caused by: org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(@data-zone-data,'91542578')]//a"}
    (Session info: chrome=89.0.4389.114)
    For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_elem...
    Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
    System info: host: 'HOME-PC', ip: '192.168.1.105', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '15.0.2'
    Driver info: org.openqa.selenium.chrome.ChromeDriver
    Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 89.0.4389.114, chrome: {chromedriverVersion: 89.0.4389.23 (61b08ee2c5002..., userDataDir: C:\Temp\scoped_dir11996_804...}, goog:chromeOptions: {debuggerAddress: localhost:49186}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
    Session ID: 43c1ecc269b243838e508784def6476d
    *** Element info: {Using=xpath, value=//*[contains(@data-zone-data,'91542578')]//a}
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:428)
    at org.openqa.selenium.By$ByXPath.findElement(By.java:353)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:315)
    at org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:205)
    at org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:201)
    at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:249)
    ... 1 more
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Орхан Гасанлы, То есть, поставить строчку кода между переходом на маркет и вкладку в секунд 20? Как в этом коде?
    WebElement market = driver.findElement(By.linkText("Маркет"));
    			market.click();
    			
    			driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    			
    			WebElement electronika = driver.findElement(By.xpath("//*[contains(@data-zone-data,'91542578')]//a"));
    			electronika.click();
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Орхан Гасанлы, Хотя, на удивление, в инспекторе все видно в поиске. Даже в консоли находит.
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Орхан Гасанлы, Увы. Ни один из кода, даже, который я попытался использовать
    WebElement electronika = driver.findElement(By.xpath("//*[contains(@data-zone-data,'91542578')]//a"));
    			electronika.click();


    не сработал. Пишет одну и ту же ошибку, что элемент не найден.
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Araya, Уже менял. Возможна ли ошибка из-за кода таймаута?
    WebElement market = driver.findElement(By.linkText("Маркет"));
    			market.click();
    			
    			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    			
    			WebElement electronika = driver.findElement(By.xpath("//div[@data-zone-name='menu']//a[@href=\"/catalog--elektronika/54440\"]"));
    			electronika.click();
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Орхан Гасанлы, Хорошо. Попробовал использовать даже такой вариант:
    WebElement electronika = driver.findElement(By.xpath("//div[@data-zone-name='menu']//a[@href=\"/catalog--elektronika/54440\"]"));
    electronika.click();


    Одно и тоже, хотя привязки к классу не имеется и в инспекторе показывает один элемент
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Суть в том, что это именно задание, а там дали определенный стек, по которому нужно работать. С яндекса на маркет переход без каких-либо усилий сделан был, а на самом маркете появилась проблема с переходом из-за несуществующего элемента, как вы мне уже объяснили, то это из-за динамических селекторов. А реализация перехода без АПИ возможна?
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Araya, Такая же ошибка, что элемент не найден.
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Araya, Обычный яндекс маркет. Хочу сделать переход с главной на страницу с электроникой. Просто не пойму, как это сделать. Почему-то с главной яндекса перешел по тексту на маркет, а далее застопорился. Уже много чего перепробовал и перегуглил. Может просто где-то не понял правильно.
  • В чем тут проблема может быть(Selenium WebDriver + JAVA)?

    @lorrrtemar Автор вопроса
    Проблема в том, что даже CSS селектор не хочет считываться, пишет ту же самую ошибку на этом же пункте. Даже по линктексту не пробивает, та же ошибка.