【问题标题】:Selenium - How to click on this span?Selenium - 如何点击这个跨度?
【发布时间】:2020-04-21 18:32:03
【问题描述】:

我尝试过使用 cssSelector 和 xpath。我不能使用class=chips__text,因为它不是唯一的。如何单击带有文本Nou 的跨度?

<ul id="targetparam17" class="chipschoice fleft">
   <li class="hidden">
      <a href="#" class="is-selected">
         <span class="chips__text">Alege</span>
         <span class="value"></span>
      </a>
   </li>
   <li class="">
      <a href="#" class="">
         <span class="chips__text">Utilizat</span>
         <span class="value">used</span>
      </a>
   </li>
   <li class="">
      <a href="#" class="">
         <span class="chips__text">Nou</span>
         <span class="value">new</span>
      </a>
   </li>
</ul>

【问题讨论】:

    标签: selenium selenium-webdriver


    【解决方案1】:

    找到与所需文本相关的元素,即“Nou”,然后单击它。它的 xpath 是//span[text()='Nou']。如果您使用不同的文本来点击不同的跨度,您可以使用字符串操作技术来操作 xpath。希望对你有帮助:)

    【讨论】:

    • elementToBeClickable(By.xpath("//span[text()='Nou']")) 不工作..
    • 尝试找到元素并点击它。例如。 WebElement ele = driver.findElement(By.xpath("//span[text()='Nou']")).click();WebElement ele = driver.findElement(By.xpath("//span[text()='Nou']")); ele.click();
    • @AndreiCraciun ElementClickInterceptedException 表示无法正确执行单击,因为目标元素以某种方式被遮挡。您应该首先确保它 isDisplayed() 和 isEnabled()。
    【解决方案2】:

    ExpectedConditions.elementToBeClickable 意味着 selenium 是可点击的,它是可见和启用的。 See Here

    所以你应该检查webElement isDisplayed() & isEnabled()。

    或者你也可以使用ExpectedConditions.visibilityOf(WebElement)

    【讨论】:

      【解决方案3】:

      我用过 //span[contains(.,'Nou')] 并且效果很好

      【讨论】:

      • 在这种情况下,这个//span[text()='Nou'] 也应该可以工作。
      【解决方案4】:

      试试下面的xpath:

      driver.find_element_by_xpath("//ul[@id='targetparam17']//li//a//span[contains(.,'Nou')")
      

      【讨论】:

        猜你喜欢
        • 2015-01-16
        • 1970-01-01
        • 2019-03-15
        • 2021-05-03
        • 2022-01-17
        • 1970-01-01
        • 2019-01-13
        • 2020-02-13
        • 1970-01-01
        相关资源
        最近更新 更多