【问题标题】:Unable to click on element using Selenium in Safari 13.0.4无法在 Safari 13.0.4 中使用 Selenium 单击元素
【发布时间】:2020-04-15 12:17:24
【问题描述】:

org.openqa.selenium.WebElement.click()org.openqa.selenium.interactions.Actions.click()等方法在运行时不会触发任何错误,而且点击的动作也不会发生。尝试使用 Javascript,但我尝试点击的元素似乎无法点击(在 Chrome 的开发人员工具中返回未定义)

这里是元素的html

<div class="flatpickr-calendar animate showTimeInput arrowTop open" tabindex="-1" style="width: 245px; top: 719px; left: 1603.17px; right: auto;">
 <div class="flatpickr-months">...</div>
 <div class="flatpickr-innerContainer">
  <div class="flatpickr-rContainer">
  <div class="flatpickr-weekdays">...</div>
   <div class="flatpickr-days" tabindex="-1" style="width: 245px;">
    <div class="dayContainer">
     <span class="flatpickr-day " aria-label="December 29, 2019" tabindex="-1">29</span>
    </div>
   </div>
  </div>
 </div>
</div>

【问题讨论】:

  • 作为替代方法,请尝试使用JavascriptExecutor 单击。它应该工作
  • @nik 实际上我试过了,但我猜 javascript 不能点击 元素

标签: java selenium xpath css-selectors webdriverwait


【解决方案1】:

要单击元素,您必须为elementToBeClickable() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.dayContainer>span.flatpickr-day[aria-label='December 29, 2019']"))).click();
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='dayContainer']/span[@class='flatpickr-day ' and text()='29']"))).click();
    

【讨论】:

  • 问题是,如果元素不可点击(无法找到,被其他元素阻止等),一定有异常。但即使 WebDriverWait 测试运行时没有任何异常,也不会使用标准点击方法执行任何点击操作
【解决方案2】:

常规executeScript(“arguments[0].click();“, element); 在这种情况下不起作用。 我必须用一些 javascript 代码创建一个字符串,看起来像这样

String javaScript = “let elem = arguments[0];” + “function triggerEvent(el, event){”
            + “var clickEvent = new MouseEvent(event,{view:window, bubbles:true, cancelable:true, clientX:20});”
            + “console.log(el.dispatchEvent(clickEvent));” + “el.style.background=‘red’;}”
            + “console.log(triggerEvent(elem, ‘mousedown’));“;

【讨论】:

    猜你喜欢
    • 2017-07-25
    • 2016-09-05
    • 2018-05-26
    • 2017-10-11
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多