如何在Java中使用Selenium选择此元素?

时间:2018-04-05 14:42:06

标签: java selenium selenium-chromedriver selector classname

我正在尝试在ChromeDriver上的Java Selenium中选择值1352

<span class="numfound" id="yui_3_18_1_1_1522936314968_15">1352</span>

因为id不直观,所以我想选择使用String&#34; numfound&#34;。我尝试过选择byClassName(&#34; numfound&#34;)并返回:

<[[ChromeDriver: chrome on MAC (befee42078624a3b036869cf2a4a0c14)] -> class name: numfound]>

或者,我已经尝试通过CSS选择并获得了这个:

Unable to locate element: {"method":"css selector","selector":"#resultsnum span.numfound"}

也许我的CSS选择器错了?使用numfound选择此元素最直观的方法是什么?

解决:我很傻,并没有使用.getText()来实现我想要的目标。

3 个答案:

答案 0 :(得分:1)

此范围是WebElement。您可以使用WebElement执行某些操作。其中一些是:

    1. click on it. (Provided that element must be clickable)
    2. getText() : Text between the <span> and </span> tag.
    3. getSize();
    4. getLocation();
    5. getScreenShotAs(OUTPUT.Type)
    6. getRect();
    7. SendKeys(charSequence)  (Provided that it can take input something).

还有更多。

截至目前,在您的问题中,您可以在span标记之间获取文本。 使用此代码:

String spanText = driver.findElement(by.cssSelector("span[class="numfound"]")).getText();  

并对其进行字符串操作 如果您对此有任何疑虑,请与我们联系。

答案 1 :(得分:0)

您只能将By-selector用于标记内的元素。

获取元素的文本

  1. 你可以使用

    driver.findElement(By.xpath("//span[@class='numfound']")).getText();

    或(如果你更喜欢):

    driver.findElement(By.className("numfound")).getText();

  2. 或通过

    从页面来源获取

    String source = driver.getPageSource();

  3. 并从中提取一个字符串,以“numfound”开头,以下面的标记结束 然后从这一行中提取你的字符串。

答案 2 :(得分:0)

你必须这样做:

WebElement element = browser.findElement(By.className("numfound"));
//do whatever you want with your element, get attributes, etc.

供参考:https://www.seleniumhq.org/docs/03_webdriver.jsp#by-class-name