我有一个自动脚本,试图转到页面,单击链接,然后确保显示登录/注册门,因为我是匿名用户。
由于无法找到我的链接,因此我无法进行登机验证。我收到以下错误:org.openqa.selenium.ElementClickInterceptedException:元素单击被拦截:元素...在点(376,846)不可单击。其他元素将获得点击:
我试图通过cssSelector和xpath的不同版本(绝对,相对等)来定位此链接。
我发现了以下线程:
并且已尝试按照https://www.selenium.dev/documentation/en/webdriver/waits/#explicit-wait执行等待 我不得不删除了Duration.ofSeconds,因为Java 3中似乎已弃用了它。我还尝试了在获得URL之后和找到元素之后直接进行等待。
我也尝试了隐式等待。我仍然遇到相同的错误。我是Java的新手,所以可以提供一些帮助!
这是我的代码:
package packagename;
import org.junit.Test;
import org.junit.Before;
import org.hamcrest.MatcherAssert;
import org.junit.After;
import static org.hamcrest.CoreMatchers.is;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.JavascriptExecutor;
import java.util.*;
import java.net.MalformedURLException;
import java.net.URL;
public class classname {
private WebDriver driver;
JavascriptExecutor js;
@Before
public void setUp() throws MalformedURLException {
driver = new RemoteWebDriver(new URL("webdriverurl"), DesiredCapabilities.chrome());
js = (JavascriptExecutor) driver;
new HashMap<String, Object>();
}
@After
public void tearDown() {
driver.quit();
}
@Test
public void name() {
driver.get("url");
new WebDriverWait(driver, (30))
.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(text(),'Abe Ikubo & Katayama')]")));
driver.findElement(By.xpath("//a[contains(text(),'Abe Ikubo & Katayama')]")).click();
MatcherAssert.assertThat(driver.findElement(By.xpath("//xpath")).getText(), is("text"));
}
}