【问题标题】: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);

        }

    }
}

【问题讨论】:

    标签: java selenium webdriver


    【解决方案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 谢谢伙计 现在它工作正常......
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签