繁体   English   中英

如何检查 Selenium 是否成功点击元素?

[英]How to check if Selenium clicks on element successfully?

在我的javaSelenium项目中,我有以下方法来单击特定元素

public void click(String xPath) {
     driver.findElement(By.xpath(xPath)).click();
}

目前,我有一个元素,它对我的​​点击没有反应! 所以,我需要确定,selenium 是否真的成功地点击了这个元素。

要点:运行时没有错误。 所以,我认为它可以找到元素。 但是,让我惊讶的是,没有点击效果!


更多细节:

我正在尝试自动化此页面 您可以在这个存储库中找到完整的代码 你需要采取一些步骤,直到你达到我真的有问题的地步。 这就是我共享存储库的原因,因为该页面不可直接访问(抱歉)。

当我在https://hello.friday.de/quote/selectFuelType 时,(请找到图片)

在此处输入图片说明

我无法使用以下 xpath 单击项目 ( Benzin ):

final String fuel = "//*[@id=\"root\"]/div/div[3]/div/div[2]/div/div/form/div[2]/div[2]/button[1]";

在运行时,没有错误,因此,我希望我可以成功单击该元素,或者成功获取当前 url 为/selectFuelType但它们都不起作用。

有问题的方法是RegisterInsuranceSteps类中的i_am_asked_to_specify_the_Fuel_Type_of_the_car()

您的 xpath 可以更简单、更稳定。 尝试这个:

final String fuel =  "//button[contains(., 'Benzin')]"

MDN 网络文档中查看有关contains方法的更多详细信息,或查看此 SO 答案以了解如何检查属性或标签名称。

关于验证按钮是否真的被点击,我认为如果您的下一个测试步骤失败就足够了。 在您的情况下,它将选择发动机功率。

在网站https://hello.friday.de/quote/selectPrecondition上,默认选择第一个选项Das Auto ist schon versichert 所以click()第二个选项Das Auto wird noch zugelassen oder umgemeldet你必须为element_to_be_clickable()引入WebDriverWait ,你可以使用以下任一定位器策略

  • cssSelector

     WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div[class^='RadioButtonListField__container--'] button:nth-child(2)"))).click()
  • XPATH

     new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[starts-with(@class, 'RadioButtonListField__container--')]//following-sibling::button[1]"))).click();

注意:这些是根据相关 HTML 的相对定位器,并没有硬编码到选项的确切文本

首先,如果 selenium 没有点击,则尝试使用备用 xpath。 您还可以使用 css 选择器。

其次,如果您想检查是否发生了点击并加载了下一页,那么您可以简单地检查标题的更改,或者您可以检查是否已从下一页加载了某个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM