【问题标题】:I have tried to click the button using all techniques. But I am unable to click it我尝试使用所有技术单击按钮。但我无法点击它
【发布时间】:2020-05-25 10:21:07
【问题描述】:
<button class="md-icon-button md-button md-ink-ripple" 
        type="button" ng-transclude="" ng-click="hide()">   
    <i class="fa fa-remove ng-scope"></i>   
</button>

步骤定义代码:

@And("^Check whether the Alert message display properly$")
public void alert_msg_display() throws Throwable {
    WebElement x= driver.findElement(By.xpath("//button[@data-hover='LOGIN NOW']")); // Path of login button
    actionClick(driver, x); // To click login button
    WebElement y= driver.findElement(By.xpath("//div[@class='md-dialog-content ng-binding']")); // Path of Alert message text
    String a = y.getText(); 
    WebElement z= driver.findElement(By.xpath("//i[@class='fa fa-remove ng-scope']")); // Path of close button of alert popup
    waitClick(driver, z); // To wait until close button display
    actionClick(driver, z); // Click on close (Note:This operation get FAILED)
    String a1 = "Please Enter Branch Id";
    driver.findElement(By.xpath("//input[@ng-model='Branchid']")).sendKeys("HO");
    actionClick(driver, x);
    String b = y.getText();
    waitClick(driver, z);
    actionClick(driver, z);;    
    String b1 = "Please Enter Username (Email Id)";
   if (a.equals(a1) && b.equals(b1))
        test.log(LogStatus.PASS, "Test Case ID: LOG_006 to LOG_010 - Pass");
    else
        test.log(LogStatus.FAIL, "Test Case ID: LOG_006 to LOG_010 - Fail");
}

跑步者文件

public void actionClick(WebDriver driver, WebElement a) {
    Actions action = new Actions(driver);
    action.moveToElement(a).click().build().perform();
}
public void waitClick(WebDriver driver, WebElement a) {
    WebDriverWait wait = new WebDriverWait(driver,10);
    wait.until(ExpectedConditions.visibilityOf(a));
}

我尝试使用.click 方法、Actions 方法、JSExecutor 方法单击按钮,还使用了Wait...但我无法单击按钮。请放下您宝贵的cmets。提前谢谢...

【问题讨论】:

  • 请进行代码试用。
  • @DebanjanB 检查已编辑的帖子....
  • @SnowGift 尝试等到警报出现wait = WebDriverWait(current_user_driver, 5) wait.until(EC.alert_is_present()) 然后alert = driver.switch_to.alert 并接受警报alert.accept()
  • @ManaliKagathara 当我使用 driver.switchTo().alert();它显示错误为“没有此类警报”
  • @SnowGift 您可以通过按 Enter 键删除警报 在您的普通浏览器中尝试此操作是否成功?

标签: html selenium selenium-webdriver button css-selectors


【解决方案1】:

根据我的观察,很明显这不是一个正常的浏览器警报(如果是,那么我们无法检查其中的元素),因此与 selenium 警报相关的代码在这里不起作用(如 driver. switchToAlert() 将抛出 No such alert)。

尝试使用下面的代码sn-p点击,可能会成功

WebElement z= driver.findElement(By.xpath("//button[@class='md-icon-button md-button md-ink-ripple']"));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", z);

【讨论】:

  • 当我尝试使用 JS Executor 单击时,它显示以下异常: org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attach to the页面文档
  • 您是否使用 chropath/任何其他工具检查了元素 //button[@class='md-icon-button md-button md-ink-ripple'] ?如果它显示找到元素,那么您可能需要使用显式等待 elementToBeStale()
  • 好的...@Riswan chatholi
【解决方案2】:

它应该在按下 ESCAPE 键时操作。请尝试以下: 以下 2 种方式可行:

获取该图像的元素定位器 -> 向元素发送 Escape。

WebElement loginimg = driver.findElement(By.id("AlertX")); loginimg.sendKeys(Keys.ESCAPE);

或者

你可以通过 Java Robot 类按下 Escape 键,如下所示:

导入 java.awt.Robot;导入 java.awt.event.KeyEvent;

机器人 r = new Robot(); r.keyPress(KeyEvent.VK_ESCAPE);

r.keyRelease(KeyEvent.VK_ESCAPE);

【讨论】:

  • Tnq fr ur 解决方案...@Kalaiselvan
  • 永远欢迎 :)
猜你喜欢
  • 1970-01-01
  • 2016-03-31
  • 2022-08-10
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
相关资源
最近更新 更多