【问题标题】:Automation: How to click on div role="radio" with only aria-label identifier?自动化:如何仅使用 aria-label 标识符单击 div role="radio"?
【发布时间】:2022-01-09 05:35:42
【问题描述】:

我使用 Selenium Webdriver 用 Ja​​va 编写了以下代码,但它没有单击带有星级的 div

driver.get("https://goo.gl/maps/gLCX3PitJT1cXr9v9");
driver.findElement(By.xpath("//button[@data-value=\"Escribir una opinión\"]")).click();
driver.switchTo().frame(2);
driver.findElement(By.xpath("//textarea")).sendKeys("This is just a test");
driver.findElement(By.xpath("//span[@aria-label=\"Cuatro estrellas\"]")).click();

在每一行之间,我还添加了一个 Thread.sleep(5000) 以确保页面完全加载。

我看到的唯一清晰的标识符是 aria-label。

手动步骤:

  • 打开网址:https://goo.gl/maps/gLCX3PitJT1cXr9v9
  • 点击“Escribir una opinión”或“写评论”按钮
  • 在评论字段中输入:“这只是一个测试”
  • 选择星级:4星
  • 点击“公开”或“发布”(或发布)

【问题讨论】:

  • 能否使用我们需要执行的手动步骤来更新问题以达到所需的 HTML?
  • @DebanjanB 搞定,从代码上看基本一样
  • 您卡在哪一步需要帮助?
  • @DebanjanB 查看描述:“它没有点击带有星级的 div”

标签: java selenium selenium-webdriver xpath automation


【解决方案1】:

“四星”元素的 Xpath 错误。应该是//div[@aria-label='Cuatro estrellas']。你有 span 代替。

【讨论】:

    【解决方案2】:

    你可以试试下面

    driver.findElement(By.xpath("//div[@class="s2xyy"][4]")).click();
    

    driver.findElement(By.xpath("//div[@role="radio"][3]")).click();
    

    它对我有用

    【讨论】:

      【解决方案3】:

      click() 星级评分4 颗星,因为所需元素在<iframe> 内,因此您必须:

      • 为所需的 frameToBeAvailableAndSwitchToIt 诱导 WebDriverWait
      • 为所需的 elementToBeClickable 诱导 WebDriverWait
      • 您可以使用以下任一Locator Strategies
        • 使用cssSelector

          new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe.goog-reviews-write-widget")));
          new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div[aria-label='Four stars']"))).click();
          
        • 使用xpath

          new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@class='goog-reviews-write-widget']")));
          new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@aria-label='Four stars']"))).click();
          

      参考

      您可以在以下位置找到一些相关讨论:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-31
        • 1970-01-01
        • 2019-09-12
        • 2017-07-29
        • 2017-10-07
        • 2022-01-25
        • 2021-06-19
        • 2019-10-21
        相关资源
        最近更新 更多