Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按类查找不使用空格的元素_Java_Css_Selenium_Xpath_Selenium Webdriver - Fatal编程技术网

Java 按类查找不使用空格的元素

Java 按类查找不使用空格的元素,java,css,selenium,xpath,selenium-webdriver,Java,Css,Selenium,Xpath,Selenium Webdriver,我正在尝试按类名查找以下WebElement: <div class="aui-column-content aui-column-content-last lfr-asset-column-content lfr-asset-column-actions-content"> 但这两种解决方案都返回了一个无接触的例外。关于我做错了什么有什么建议吗 编辑:这里是一些相邻的html <div id="aui_3_2_0_11858" class="portlet-body">

我正在尝试按类名查找以下WebElement:

<div class="aui-column-content aui-column-content-last lfr-asset-column-content lfr-asset-column-actions-content">
但这两种解决方案都返回了一个无接触的例外。关于我做错了什么有什么建议吗

编辑:这里是一些相邻的html

<div id="aui_3_2_0_11858" class="portlet-body">
    <div class="top-links-container">
    <div id="aui_3_2_0_11857" class="aui-layout ">
        <div id="aui_3_2_0_11856" class="aui-layout-content ">
            <div class="taglib-header ">
                <span class="header-back-to">
                <h1 class="header-title">
            </div>
            <div class="aui-column aui-w75 lfr-asset-column lfr-asset-column-details aui-column-first ">
                <div class="aui-column-content aui-column-content-first lfr-asset-column-content lfr-asset-column-details-content ">
            </div>
        <div id="aui_3_2_0_11855" class="aui-column aui-w25 lfr-asset-column lfr-asset-column-actions aui-column-last">
            <div class="aui-column-content aui-column-content-last lfr-asset-column-content lfr-asset-column-actions-content">
        </div>
    </div>
</div>

尝试使用
contains()
函数和
xpath
。正如@shohama所提到的,它看起来确实像是多个类。提供更多的
html
,我们可以帮助您编写更完美的选择器

//div[包含(@class,'aui-column-content aui column content last lfr asset column content lfr asset column actions content')]

并且,在开始使用之前,使用wait确保元素存在

By byXpath = By.xpath("//div[contains(@class,'aui-column-content aui-column-content-last lfr-asset-column-content lfr-asset-column-actions-content')]");
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(byXpath ));
编辑
//div[contains(@class,'aui-column-content-last')]
应该足以搜索目标
div
。至少对于OP提供的
html


注意:认为最后一个
aui列内容在页面上是唯一的

你见过jQuery吗?我对XPath没有太多经验,但它使选择元素更容易,如下所示:

$(".classname")
对于CSS

.aui-column-content.aui-column-content-last...
{
color: black;
}

我应该这样做。希望我能帮忙

如果问题的末尾没有空格字符,则问题中的Xpath表达式将起作用:

//div[@class='aui-column-content aui-column-content-last lfr-asset-column-content lfr-asset-column-actions-content']
这肯定会找到这个
div
元素。我并不是说这是找到它的最佳方法,但每个人似乎都认为路径表达式在某种程度上不适用于多个类

编辑

你已经更新了问题。现在,
div
看起来又略有不同,只是

//div[contains(@class,'aui-column-content aui-column-content-last   lfr-asset-column-content lfr-asset-column-actions-content')]

我会找到的。您不能使用该
div

的@id属性的任何原因,该属性指示多个类,而不是一个带空格的类名。不允许。我们确定这个“contain”方法解决了我这里遇到的多类问题吗?我将发布更多相邻的html。@user215050
contains()
效果很好。但是,类名相当长。无论如何,这可能不是一个好主意。更多
html
将help@user2150250
//div[contains(@class,'aui-column-content-last')]
这就足够了
Contains()
提供了使用部分匹配进行搜索的功能。我仍然很好奇,为什么具有多个类名的
Contains
无法找到元素。我尝试了答案中建议的所有方法。@user215050它绝对有效-如果您密切注意属性值中的空白并在XPath表达式中重现它。@user215050则您要么错误地应用了此XPath表达式,要么没有忠实地重现用作您的HTML输入。但为了确保您需要显示一个完整的HTML文档。我很抱歉。我不知道当我在html上复制的时候,额外的空间是怎么进来的。我问题中的原始内容是正确的。无法使用id属性,因为该特定元素用于的每个页面都不同。唯一的常量是类。
//div[contains(@class,'aui-column-content aui-column-content-last   lfr-asset-column-content lfr-asset-column-actions-content')]