16

isTextPresentSelenium 2 (WebDriver) にはありません

WebDriver を使用してページにテキストが存在することをアサートする正しい方法は何ですか?

4

8 に答える 8

15

私は通常、次の行に沿って何かを行います。

assertEquals(driver.getPageSource().contains("sometext"), true);

assertTrue(driver.getPageSource().contains("sometext"));
于 2011-10-10T15:53:46.777 に答える
6

ページソースには、検索テキストを壊して誤検知を引き起こす可能性のあるHTMLタグが含まれています。このソリューションは、SeleniumRCのisTextPresentAPIとよく似ていることがわかりました。

WebDriver driver = new FirefoxDriver(); //or some other driver
driver.findElement(By.tagName("body")).getText().contains("Some text to search")

getTextを実行してからcontainsを実行すると、パフォーマンスのトレードオフが発生します。より具体的なWebElementを使用して、検索ツリーを絞り込むことができます。

于 2012-05-18T09:47:28.067 に答える
3

または、 WebElementのテキスト コンテンツを実際に確認したい場合は、次のようにすることができます。

assertEquals(getMyWebElement().getText(), "Expected text");
于 2012-03-01T16:45:36.370 に答える
3

これは少し古いことは知っていますが、ここで良い答えを見つけました: Selenium 2.0 Web Driver: implementation of isTextPresent

Python では、これは次のようになります。

def is_text_present(self, text):
    try: el = self.driver.find_element_by_tag_name("body")
    except NoSuchElementException, e: return False
    return text in el.text
于 2012-01-19T21:05:16.927 に答える
2

WebDriver で Java を使用する次のコードは機能するはずです。

assertTrue(driver.getPageSource().contains("Welcome Ripon Al Wasim"));
assertTrue(driver.findElement(By.id("widget_205_after_login")).getText().matches("^[\\s\\S]*Welcome ripon[\\s\\S]*$"));
于 2012-11-21T06:19:32.783 に答える
2

JUnit4 の isTextPresent 用の Selenium2 Java コード (Selenium IDE コード)

public boolean isTextPresent(String str)
{
    WebElement bodyElement = driver.findElement(By.tagName("body"));
    return bodyElement.getText().contains(str);
}

@Test
public void testText() throws Exception {
    assertTrue(isTextPresent("Some Text to search"));
}
于 2012-08-16T11:10:54.693 に答える
1

私は次の方法を書きました:

public boolean isTextPresent(String text){
        try{
            boolean b = driver.getPageSource().contains(text);
            return b;
        }
        catch(Exception e){
            return false;
        }
    }

上記のメソッドは、次のように呼び出されます。

assertTrue(isTextPresent("some text"));

それはうまく機能しています。

于 2012-10-01T09:56:28.870 に答える
0

ターゲット ブラウザとして firefox を使用して、テキストが Ruby に存在するかどうかをテストします (初心者向けのアプローチ)。

1)もちろん、次のようなものでセレンサーバーjarファイルをダウンロードして実行する必要があります。

java - jar C:\Users\wmj\Downloads\selenium-server-standalone-2.25.0.jar

2) ruby​​ をインストールし、その bin フォルダーでコマンドを実行して、追加の gem をインストールする必要があります。

gem install selenium-webdriver
gem install test-unit

3) 以下を含むファイル test-it.rb を作成します。

require "selenium-webdriver"
require "test/unit"

class TestIt < Test::Unit::TestCase

    def setup
        @driver = Selenium::WebDriver.for :firefox
        @base_url = "http://www.yoursitehere.com"
        @driver.manage.timeouts.implicit_wait = 30
        @verification_errors = []
        @wait = Selenium::WebDriver::Wait.new :timeout => 10
    end


    def teardown
        @driver.quit
        assert_equal [], @verification_errors
    end

    def element_present?(how, what)
        @driver.find_element(how, what)
        true
        rescue Selenium::WebDriver::Error::NoSuchElementError
        false
    end

    def verify(&blk)
        yield
        rescue Test::Unit::AssertionFailedError => ex
        @verification_errors << ex
    end

    def test_simple

        @driver.get(@base_url + "/")
        # simulate a click on a span that is contained in a "a href" link 
        @driver.find_element(:css, "#linkLogin > span").click
        # we clear username textbox
        @driver.find_element(:id, "UserName").clear
        # we enter username
        @driver.find_element(:id, "UserName").send_keys "bozo"
        # we clear password
        @driver.find_element(:id, "Password").clear
        # we enter password
        @driver.find_element(:id, "Password").send_keys "123456"
        # we click on a button where its css is named as "btn"
        @driver.find_element(:css, "input.btn").click

        # you can wait for page to load, to check if text "My account" is present in body tag
        assert_nothing_raised do
            @wait.until { @driver.find_element(:tag_name=>"body").text.include? "My account" }
        end
        # or you can use direct assertion to check if text "My account" is present in body tag
        assert(@driver.find_element(:tag_name => "body").text.include?("My account"),"My account text check!")

        @driver.find_element(:css, "input.btn").click
    end
end

4) ルビーを実行します。

ruby test-it.rb
于 2012-11-08T13:24:24.963 に答える