Нажатие кнопки чата с селеном Java - PullRequest
1 голос
/ 13 января 2020

Я пытаюсь нажать кнопку чата с селеном, который появляется примерно через 3 секунды после загрузки страницы, у него нет идентификатора или имени, я пробовал неявное и явное ожидание, Xpath, CSS селектор, имя тега , почти все. Это просто не может найти элемент. Я думаю, что селен не воспринимает кнопку как часть HTML. Мне нужна ваша помощь ...

Ссылка: https://shopiqa.com/

Мой код:

TestTools.driver.get("https://shopiqa.com/");
TestTools.driver.manage().window().maximize();
TestTools.driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
TestTools.driver.findElement(By.xpath("//*[@id=\"desktop-start\"]/button")).click();

Изображение: Tring to click envite button

Ответы [ 3 ]

3 голосов
/ 13 января 2020

Кнопка чата присутствует внутри iframe . Вам нужно сначала переключить ее, чтобы получить доступ к Chat button.

Induce WebDriverWait () и frameToBeAvailableAndSwitchToIt ( ) и следующий css селектор.

Затем прокрутите страницу, а затем

индуцируйте WebDriverWait () и elementToBeClickable () и css селектор.

driver.navigate().to("https://shopiqa.com/"); 
driver.manage().window().maximize();
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe.envite-iframe")));
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,500)");
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div#desktop-start>button"))).click();

Снимок браузера:

enter image description here

1 голос
/ 13 января 2020

В вашем случае есть iFrame. Во-первых, вы можете переключить свой драйвер именно на этот iFrame, а затем выполнить метод click ().

Для справки, вы можете обратиться к следующему коду:

driver.get("https://shopiqa.com/");
WebDriverWait wait = new WebDriverWait(driver, 120);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@class='envite-iframe']")));
WebElement iframeElement = driver.findElement(By.xpath("//*[@class='envite-iframe']"));
driver.switchTo().frame(iframeElement);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='desktop-start']/button")));
driver.findElement(By.xpath("//*[@id='desktop-start']/button")).click();
0 голосов
/ 13 января 2020

попробуйте это:

//*[@id="desktop-start"]/button/p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...