Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 是否有可能根据“元素”找到元素;p";标记但单击";a「;在里面贴上标签;div";?_Java_Selenium Webdriver_Automated Tests - Fatal编程技术网

Java 是否有可能根据“元素”找到元素;p";标记但单击";a「;在里面贴上标签;div";?

Java 是否有可能根据“元素”找到元素;p";标记但单击";a「;在里面贴上标签;div";?,java,selenium-webdriver,automated-tests,Java,Selenium Webdriver,Automated Tests,我想在屏幕上选择一些模式进行测试。但是有8种不同类型的模式。如果不单击模式的图像,我无法选择任何模式。元素显示如下 <div class="template-list-board row"> <div class="template-item-list"> <a class="item-image-click" ....> </a> <p class="item-name">Meeting Age

我想在屏幕上选择一些模式进行测试。但是有8种不同类型的模式。如果不单击模式的图像,我无法选择任何模式。元素显示如下

<div class="template-list-board row">
    <div class="template-item-list">
        <a class="item-image-click" ....> </a>
        <p class="item-name">Meeting Agenda</p>
    </div>
    <div class="template-item-list">
      ...
</div>
我创建了web元素列表,并根据我想用Java8流选择模式名的值对其进行过滤,这样我就可以用(up div[class='up template list board row']>div>p to div[class='template-list-board row']>div>a)替换过滤后的元素,但这不是一个好主意,我经历过。 那么,有没有办法点击“a”标签

html显示如下

<div class="template-list-board row">
    <div class="template-item-list">
        <a class="item-image-click" ....> </a>
        <p class="item-name">Meeting Agenda</p>
    </div>
    <div class="template-item-list">
      ...
</div>

会议议程

...
我不确定我是否正确理解您,但我的解决方案是这样的(使用XPATH而不是css):

1) 为定位器创建字符串:

String locator = "//div[class='template-list-board row']//p[text()='" + hereYourNameVariableAsString + "']/preceding-sibling::a";
2) 然后创建您的元素:

WebElement element = driver.findELement(by.xpath(locator));

这里重要的是,你的定位是动态的,你必须提供你的菜单名或任何名称代表,如“会议议程”。然后,它将找到该菜单和上一个sbling
a
进行单击。我希望我能正确理解这个问题,这会有所帮助

我不确定我是否正确理解您,但我的解决方案是这样的(使用XPATH而不是css):

1) 为定位器创建字符串:

String locator = "//div[class='template-list-board row']//p[text()='" + hereYourNameVariableAsString + "']/preceding-sibling::a";
2) 然后创建您的元素:

WebElement element = driver.findELement(by.xpath(locator));

这里重要的是,你的定位是动态的,你必须提供你的菜单名或任何名称代表,如“会议议程”。然后,它将找到该菜单和上一个sbling
a
进行单击。我希望我能正确理解这个问题,这会有所帮助

我很高兴你这么做了。你是怎么解决的?你好,我为第1页创建了一个自定义方法-在css上创建2个web元素列表(list1->“.template item list>p”,list2->“.template item list>a)2-Use stream for java用于过滤list1以查找索引号(因为在我的例子中,a和p标记对于相关字段具有相同的索引号)3-使用列表2的索引号而不是单击itI我很高兴你这么做了。你是如何解决的?它比我上面提到的更简单。您好,我为第1页创建了一个自定义方法-在css上创建2个web元素列表(列表1->“。模板项列表>p”,列表2->“。模板项列表>a)2-使用java流过滤列表1以查找索引号(因为在我的例子中,a和p标记对于相关字段具有相同的索引号)3-使用列表2的索引号,然后单击它