org.openqa.selenium.InvalidSelectorException:尝试定位元素时无效的选择器

时间:2019-03-26 02:33:32

标签: java selenium-webdriver xpath css-selectors xpath-1.0

我的元素显示为:

Year Item ID
2005   a   1234
2005   b   1234
2005   a   4567
2005   b   4567
2006   a   4567
2006   a   7894

xpath是:

<a class="main-item" href="#">Business Loans</a>

这将返回//*[@id='main-nav']/ul/li[1]/a[1]']

invalid element locator

我正在尝试获取元素。

3 个答案:

答案 0 :(得分:0)

欢迎来到SO。这是简单的xpath。

//*[@id='main-nav]//a[@class='main-item' and .='Business Loans']

如果要使用您提到的那个,这里是更正的内容。

driver.findElement(By.xpath("//*[@id='main-nav']/ul/li[1]/a[1]"))

答案 1 :(得分:0)

尝试在xpath中包含函数,它可以提取与特定文本值匹配的所有元素

//a[contains(text(),'Business Loans')]

答案 2 :(得分:0)

此错误消息...

org.openqa.selenium.InvalidSelectorException: invalid selector

...表示您的xpath无效。

对于'值和"值,都不能使用单引号,即 By 或双引号,即 WebElement element = driver.findElement(By.cssSelector("#main-nav a.main-item")); 属性值。


解决方案

您可以使用以下任一Locator Strategies

  • cssSelector

    WebElement element = driver.findElement(By.xpath("//a[@class='main-item' and text()='Business Loans']"));
    
  • xpath

    <?xml version="1.0" encoding="utf-8" ?>
    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             BackgroundColor="Black" x:Name="MainContentPage"
             x:Class="BluePin.MainPage">
    <ContentPage.Content>
        <Image Source="{Binding SelectedImage}" Aspect="AspectFill"
                                                HorizontalOptions="FillAndExpand"
                                                VerticalOptions="FillAndExpand" 
                                                BackgroundColor="Transparent"   />
    </ContentPage.Content>
    </ContentPage>