硒,Js隐藏的Xpath

Selenium, Xpath hidden by Js

本文关键字:Xpath 隐藏 Js      更新时间:2023-09-26

我对网站上的js元素有问题。Selenium看不到我的xpath,因为我认为这个元素隐藏在Js 后面

我用过wait.until(ExpectedConditions.elementToBeClickable。。。。当我想检查这个元素时,我不能。我看到js。在地图上。当然,我已经通过(Firebug,firepath)找到了这个元素,但Selenium看不到,也无法点击

driver.findElement(By.xpath(".//*[@id='gmap']/div/div[1]/div[3]/div[3]/div[6]"));
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@id='gmap']/div/div[1]/div[3]/div[3]/div[4]")));
        driver.findElement(By.xpath(".//*[@id='gmap']/div/div[1]/div[3]/div[3]/div[4]")).click();
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@id='gmap']/div/div[1]/div[3]/div[3]/div[16]")));
        driver.findElement(By.xpath(".//*[@id='gmap']/div/div[1]/div[3]/div[3]/div[16]")).click();

硒看不见这种元素。

wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@id='gmap']/div/div[1]/div[2]")));
                driver.findElement(By.xpath(".//*[@id='gmap']/div/div[1]/div[2]")).click();

您有各种各样的可能性。

1) 也许您的元素的opacity属性设置为0,所以您可以通过jQuery将其设置为1并使其可见:

WebDriver driver = new YOUR_DRIVER();
if (driver instanceof JavascriptExecutor) {
 ((JavascriptExecutor)driver).executeScript("$('YOUR_ELEMENT').css('opacity','1');");
}

2) 当你必须点击你的元素时,你可以将他的z-index值更改为页面中"最可见的":

WebDriver driver = new YOUR_DRIVER();
if (driver instanceof JavascriptExecutor) {
 ((JavascriptExecutor)driver).executeScript("$('YOUR_ELEMENT').css('z-index','100');");
}

3) 你可以隐藏你的JS。