当前位置: 首页 > 知识库问答 >
问题:

获取异常:不能单击元素,因为另一个元素模糊了它[重复]

曾弘扬
2023-03-14
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个答案

彭烨烁
2023-03-14

您需要添加wait for cityModal webelement,因为在页面加载上,您的下拉列表是不可见的:

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);
 类似资料:
  • 我想点击一个按钮,这个按钮要么还不能点击,要么上面有另一个元素。 但只要它是可点击的,我就想按它。我试过这个: 但它不起作用,因为我仍然得到错误

  • 我正在尝试自动化访问点web配置。在此期间,我会弹出一个我想要点击的窗口(类似于“是”和“否”的叠加 我试图单击的覆盖层的HTML代码: 我试过了 但我得到以下错误: 引发exception_class(message,screen,stacktrace)selenium.common.exceptions.ElementClickInterceptedException:message:元素在点

  • 由于以下异常,我的脚本失败了。 WebDriverException:未知错误:在点(355,160)处不能单击元素 在加载页面时,如果元素出现在背景中,selenium会尝试单击,但失败。我使用过WebDriverWait。在10次中,它至少失败了3次。 在不使用thread.sleep()的情况下如何避免/处理这种情况;

  • img单击很少会失败,即使要获得单击的元素是相同的,也不会声称该元素不可单击。 我有一个对话框,包含一些按钮(关闭按钮与img X在里面)。 如您所见,元素是相同的。我开始怀疑这个元素的陈旧性,它的支持性,甚至元素移动的可能性。 下面是一个代码片段,其中包括调试消息,我将解释。 在执行单击之前: 正如您所看到的,内部HTML只是一个IMG: 因此,任何关于为什么会发生这种情况的建议都将非常感谢。

  • 这是我的问题。 我有一个像这样的简单表格(示例): null null 并且我正在尝试列的名称,同时单击元素。 我想这可能是一个简单的解决办法但我找不到。 提前致谢

  • 问题内容: 现在,我有一个div,它基本上是一个巨大的正方形,在div内,我还有另一个div,它是简单的文本,上面写着“ Upload File”,同时还有一个隐藏的input type = file元素。当用户按下div时,我要触发文件上传元素。到目前为止,我想出的代码是: 因此,我在CSS中将文件输入元素设置为。一旦他们在div id =“ test”中的任意位置单击,我想触发对文件上传元素的