Selenium:它不会点击我需要的元素

问题描述 投票:0回答:2

我正在学习自动化,这是我的第二个脚本..我想做一些非常非常简单的事情,请转到https://demoqa.com/单击“小部件”,然后单击“滑块”,但我尝试了所有元素,但它不起作用...我无法尝试使用 Select,因为我有 ul il 但没有值。 我也尝试过使用不可见的页脚元素,但它也不起作用..这是我的代码...(记住我在这方面真的很新..)我将我尝试过的所有方式都留下了评论

package paginas;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Slider {
        //Identify all elements to use

        //Poblem: Unable to locate the element
        //@FindBy(className="btn btn-light active")

        //Problem: element not interactable
        //@FindBy(id="item-3")  
        
        //Problem (abs xpath):element click intercepted: Element <li class="btn btn-light " id="item-3">...</li> 
                //is not clickable at point (177, 621). Other element would receive the click: <footer>...</footer> 
        //@FindBy(xpath="/html[1]/body[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[4]/div[1]/ul[1]/li[4]")
        
        //Problem (Rel xpath: element click intercepted: Element <li class="btn btn-light " id="item-3">...</li> 
           //is not clickable at point (177, 621). Other element would receive the click: <footer>...</footer>)
        @FindBy(xpath="//div[4]//div[1]//ul[1]//li[4]")
        WebElement slider;      
        WebDriver driver;
                
        public Slider(WebDriver driver) {
            this.driver = driver;
            //Inicializacion de los elementos con una espera impicita
            PageFactory.initElements(new AjaxElementLocatorFactory(driver,20), this);
    
        }       
        public void clickonSlider()
        {   // 4 | click | css=.show #item-3 > .text | 
            // Hace click en Sliders
//          //driver.findElement(By.cssSelector(".show #item-3 > .text")).click();
            slider.click();
        }       
    
    
} 

Slider

java selenium selenium-webdriver xpath css-selectors
2个回答
1
投票

该元素尚不可见,这就是您收到

not interactable
错误的原因,而且 className 方法不匹配多个类。

解决方案

通过 xpath 找到该元素,然后使用

JavascriptExecutor
组件在可以单击后滚动到该元素。

WebElement slider = driver.findElement(By.xpath("//span[text()=\"Slider\"]"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", slider);
slider.click();

您还可以使用注解@FindBy来切换本地声明

@FindBy(xpath="//span[text()=\"Slider\"]"
WebElement slider;

0
投票

在像 Tampermonkey 这样的 chrome 插件中模拟情况。

© www.soinside.com 2019 - 2024. All rights reserved.