通过Xpath查找元素,而不是在Selenium Webdriver

时间:2017-04-08 16:11:29

标签: selenium xpath selenium-webdriver selenium-chromedriver

在以下示例中,我只需单击Jet Airways。看来所选的xpath是正确的,因为它仅从选择中给出了权利。 http://i.imgur.com/8TiOgha.png

然而,当Selenium WebDriver提取相同内容时,它表示元素不可见。但它仍然给出一个长度为零的文本字符串Button。在观察窗口中给出。

http://i.imgur.com/jrR0221.png

如果有人能帮助我指出我是否因为我是VBA新手而有任何错误,我将不胜感激

1 个答案:

答案 0 :(得分:1)

不确定您的XPath是否正确并找到正确的静态元素...
你可以用它来定位'Jet Airways'

//label[text()[contains(.,'Jet Airways')]]

此外,使用.click(),尝试点击“航空公司”下拉列表,然后找到“航空公司下拉列车”XPath

//span[@title='Airlines']

更新

public class SkyScanner 
{



    static String chkBxXpth = "//label[@class='dropdown-item cfx']/input[@checked]";

        public static void main(String[] args) throws InterruptedException 
        {       
            WebDriver driver = new FirefoxDriver();
            Actions actions = new Actions(driver);
            WebDriverWait wait = new WebDriverWait(driver, 30);

            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
            driver.get("http://skyscanner.cntraveller.com/en-GB/flights#/result?originplace=AUH&destinationplace=LHR");

            wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@title='Airlines']")));
            driver.findElement(By.xpath("//span[@title='Airlines']")).click();
            List<WebElement> chkBx = driver.findElements(By.xpath(chkBxXpth));
            for(WebElement i : chkBx)
            {
                actions.moveToElement(i).click().perform();
            }
            driver.findElement(By.xpath("//label[text()[contains(.,'Jet Airways')]]")).click();
        }

    }