Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在Safari 13.0.4中单击使用Selenium的元素_Java_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

Java 无法在Safari 13.0.4中单击使用Selenium的元素

Java 无法在Safari 13.0.4中单击使用Selenium的元素,java,selenium,xpath,css-selectors,webdriverwait,Java,Selenium,Xpath,Css Selectors,Webdriverwait,诸如org.openqa.selenium.WebElement.click()或org.openqa.selenium.interactions.Actions.click()等方法在运行时不会触发任何错误,但也不会发生单击操作。尝试使用Javascript,但我尝试单击的元素似乎不可单击(在Chrome的开发者工具中返回未定义) 下面是元素的html <div class="flatpickr-calendar animate showTimeInput arrowTop open"

诸如
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>

...
...
29

要单击元素,您必须为
元素导入WebDriverWait以使其可伸缩()
,并且您可以使用以下任一选项:

  • css选择器

    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();
    

Regular
executeScript(“参数[0]。单击();”,元素);
在这种情况下不起作用。 我必须用一些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’));“;

另一种方法是使用
JavascriptExecutor
单击。它应该work@nik实际上我试过了,但我猜javascript不能点击元素问题是,如果元素不可点击(找不到,被其他元素阻止,等等),那么肯定会出现异常.但即使使用WebDriverWait测试,也不会运行任何异常,并且不会使用标准的单击方法执行任何单击操作