出现异常:元素不可点击,因为另一个元素遮住了它[重复]
Posted
技术标签:
【中文标题】出现异常:元素不可点击,因为另一个元素遮住了它[重复]【英文标题】:Getting Exception: Element is not clickable because another element obscures it [duplicate] 【发布时间】:2018-12-19 05:41:09 【问题描述】:package Roughpack;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class MyClass
public static void main(String[] args)
System.setProperty("webdriver.gecko.driver","D:\\Executabel\\geckodriver-v0.21.0-win64\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver, 20);
driver.get("http://pro.tykitksa.com/");
driver.manage().window().maximize();
driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
List<WebElement> dropDownList = driver.findElements(By.id("user_event_city"));
System.out.println(dropDownList.size());
for (int i = 0; i < dropDownList.size(); i++)
System.out.println(dropDownList.get(i).getText());
WebElement Dropdown = driver.findElement(By.id("user_event_city"));
Select select = new Select(Dropdown);
select.selectByIndex(4);
【问题讨论】:
【参考方案1】:您需要添加等待 cityModal 网页元素,因为在页面加载时您的下拉菜单是不可见的:
System.setProperty("webdriver.gecko.driver","D:\\Executabel\\geckodriver-v0.21.0-win64\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver, 20);
driver.get("http://pro.tykitksa.com/");
driver.manage().window().maximize();
driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
//this is wait for se-pre-con-home element will be invisible
wait.until(ExpectedConditions.invisibilityOf(driver.findElement(By.xpath("//div[@class=\"se-pre-con-home\"]"))));
List<WebElement> dropDownList = driver.findElements(By.id("user_event_city"));
System.out.println(dropDownList.size());
for (int i = 0; i < dropDownList.size(); i++)
System.out.println(dropDownList.get(i).getText());
WebElement Dropdown = driver.findElement(By.id("user_event_city"));
Select select = new Select(Dropdown);
select.selectByIndex(4);
【讨论】:
但是所有的下拉列表都显示在控制台 System.out.println(dropDownList.get(i).getText()); 当页面已经打开时它在你的浏览器中,但是当你启动 webdriver 你的页面看起来像prnt.sc/k53yg8 然后像prnt.sc/k53yje -> prnt.sc/k53yje,所以你需要等待 cityModal 元素 在线程“main”org.openqa.selenium.ElementClickInterceptedException 中遇到相同的异常异常:元素 @MyTesting_Account 现在看看解决方案,请再试一次,我编辑等待 @Sergiy Konoplyaniy 谢谢伙计 现在它工作正常......以上是关于出现异常:元素不可点击,因为另一个元素遮住了它[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何错误处理 Selenium 无法单击元素,因为其他元素在 C# 中遮挡了它? [复制]