为什么我在尝试使用Selenium单击按钮时会收到InvalidSelectorException?

时间:2015-07-17 22:43:22

标签: java selenium selenium-webdriver

我在与Selenium合作时非常新。我想点击以下选择按钮: enter image description here

这是我的代码:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class FirstTest 
{
    private static WebDriver driver;

    public static void main(String[] args) throws Exception
    {
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.navigate().to("http://www.metro.ca/flyer/index.en.html");

        WebElement postalCodeInputBox = driver.findElement(By.name("postalcode"));
        postalCodeInputBox.sendKeys("L6R1A1");
        postalCodeInputBox.submit();

        String pageSource = driver.getPageSource();
        if(pageSource.contains("setstore btn"))
            System.out.println("setstore btn FOUND");

        WebElement selectButton = driver.findElement(By.className("setstore btn"));
        selectButton.click();
    }
}

图片确认" setstore btn"在源头: enter image description here

这是" setstore btn "在来源: enter image description here

1 个答案:

答案 0 :(得分:2)

很可能是由于您尝试在单个By.className()中搜索两个单独的类而导致的。 " setstore"和" btn"每个人都有自己的班级。

尝试替换

WebElement selectButton = driver.findElement(By.className("setstore btn"));

WebElement selectButton = driver.findElement(new ByAll(By.className("setstore"), By.className("btn")));

或者,https://stackoverflow.com/a/16090160/1055102提供了另一个不错的选择。

WebElement selectButton = driver.findElement(By.cssSelector(".setstore.btn"));