QA-Fundamentals-Test-Automation, Selenium-Exercise, Problem 6. Self reporting test
Искам да направя автоматично докладването на бъгове в GitHub. Стигнах до стъпката за кликане на бутона Submit new issue, но изглежда, че този бутон има свойства, който го правят некликаем, въпреки че съм вкарал текст като заклавие и описание.
Как да го направя въпросния бутон кликаем?
Има ли друг начин да се пусне Issue-то?
Това, което пробвах:
WebElement sendIssue = driver.findElement(By.xpath("/html/body/div[5]/div/div/div[2]/div[1]/div/form/div[2]/div[1]/div/div/div[3]/button"));
sendIssue.click();
Грешката:
org.openqa.selenium.WebDriverException: Element is not clickable at point (883, 547.7999877929688). Other element would receive the click: div class="modal-backdrop">

Супер, така разбрах откъде идва проблемът. Преди да изпратя Issue-то отивах при Labels, където ми активира прозорец с некликаеми опции, който оставаше активен, докато търся бутона Submit new issue. След като премахнах тази част, проработи кликът.
Java
***previous code***
WebElement newIssue = driver.findElement(By.xpath("/html/body/div[5]/div/div/div[2]/div[1]/div/div[1]/a")); newIssue.click(); /* comment WebElement applyLable = driver.findElement(By.xpath("/html/body/div[5]/div/div/div[2]/div[1]/div/form/div[2]/div[2]/div[1]/div/div[1]/button")); applyLable.click(); WebElement typeOfIssue = driver.findElement(By.id("label-filter-field")); typeOfIssue.sendKeys("bug"); WebElement clickType = driver.findElement(By.xpath("/html/body/div[5]/div/div/div[2]/div[1]/div/form/div[2]/div[2]/div[1]/div/div[1]/div/div/div[3]")); clickType.click(); */ WebElement issueTitle = driver.findElement(By.id("issue_title")); issueTitle.clear(); issueTitle.sendKeys(issue); WebElement issueBody = driver.findElement(By.id("issue_body")); issueBody.sendKeys(String.format("Expected result: %s;%nActual result: %s", stringExpected, stringFound)); try { Thread.sleep(5000); } catch (InterruptedException e) { System.out.println("caught exception"); } WebElement sendIssue = driver.findElement(By.xpath("/html/body/div[5]/div/div/div[2]/div[1]/div/form/div[2]/div[1]/div/div/div[3]/button")); sendIssue.click(); try { Thread.sleep(5000); } catch (InterruptedException e) { System.out.println("caught exception"); }Може би и pause може да се махне.
Принципно има случаи когато може и да не можеш да кликнеш бутона. Тогава може да пробваш подобни:
pause.until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(text(),'Clear Bag')]")));
или
continueBay.sendKeys(Keys.ENTER); замества continueBay.click();