出现异常:元素不可点击,因为另一个元素遮住了它[重复]

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 谢谢伙计 现在它工作正常......

以上是关于出现异常:元素不可点击,因为另一个元素遮住了它[重复]的主要内容,如果未能解决你的问题,请参考以下文章

2selenium点击被页面上其他元素遮住的控件

使用 chrome 驱动程序时元素不可点击

如何错误处理 Selenium 无法单击元素,因为其他元素在 C# 中遮挡了它? [复制]

解决点击锚点置顶内容被导航遮住

如何使用 Python 在 Selenium 中解决元素不可点击的问题 [重复]

jQuery设置另一个项目的css“颜色”元素覆盖了它的悬停伪类