如何在硒中的特定webelement中找到直接的webelements?

时间:2016-06-16 11:24:32

标签: java selenium

以下是我的HTML代码:

<div class="abc">
  <ul class="a">
    <li></li>
    <ul class="b">
  <ul class="c">
<div class="abcd">
  <ul class="d">
    <li></li>

我想找到第一个 ul 元素

  

css定位器将= div.abc&gt; UL

但我想使用下面的代码找到这个元素:

final String firstUlElement = ">ul";

@FindBy(css = ".div.abc")
WebElement divElement;

List<WebElement> firstUlElement = this.divElement.findElements(By.cssSelector(firstUlElement));

但它会引发以下错误:

The given selector >ul> is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: An invalid or illegal selector was specified
Command duration or timeout: 7 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 16:57:40'
System info: host: 'PratikPat-w7', ip: '192.168.56.1', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_71'
*** Element info: {Using=css selector, value=>ul}
Session ID: ba99cd84-0640-4af7-870a-50d79d893332
Driver info: org.openqa.selenium.firefox.FirefoxDriver

那么如何使用上面的代码找到div.abc之后的第一个立即元素? 事先提醒

2 个答案:

答案 0 :(得分:1)

<div><iframe width="283" height="242.5" src="randomglink()" frameborder="0" allowfullscreen></iframe></div>上使用>时,您无需添加findElements()。如果您进行此更改,它应该可以正常工作。

WebElement

注意:您正在使用final String firstUlElement = "ul"; 。这将产生一个元素列表,而不仅仅是第一个findElements()。您是不是要使用ul

答案 1 :(得分:1)

divElement.findElements(By.cssSelector(firstUlElement));会在>ul下搜索标记divElement。没有这样的标签。

要使用>搜索直接孩子,您需要在cssSelector

中同时使用父级和标识符

By.cssSelector(div.abc > ul)

或使用divElement

final String firstUlElement = "ul";

@FindBy(css = "div.abc")
WebElement divElement;

WebElement firstElement = divElement.findElement(By.cssSelector(firstUlElement));

这将为您提供它找到的第一个元素。

注意我从div.abc删除了点。 Dot代表一个类,您不能在<div>标记上使用它。