Không có isTextPresent
trong Selenium 2 (WebDriver)tương đương của isTextPresent trong Selenium 1 (Selenium RC) trong Selenium 2 (WebDriver)
cách chính xác để khẳng định sự tồn tại của một số văn bản trên một trang với WebDriver là gì?
Không có isTextPresent
trong Selenium 2 (WebDriver)tương đương của isTextPresent trong Selenium 1 (Selenium RC) trong Selenium 2 (WebDriver)
cách chính xác để khẳng định sự tồn tại của một số văn bản trên một trang với WebDriver là gì?
Tôi thường làm điều gì đó dọc theo dòng:
assertEquals(driver.getPageSource().contains("sometext"), true);
assertTrue(driver.getPageSource().contains("sometext"));
Tôi biết đây là một chút cũ, nhưng tôi tìm thấy một câu trả lời tốt ở đây: Selenium 2.0 Web Driver: implementation of isTextPresent
Trong Python, điều này có vẻ như:
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
Hoặc nếu bạn thực sự muốn kiểm tra nội dung văn bản của WebElement bạn có thể làm điều gì đó như:
assertEquals(getMyWebElement().getText(), "Expected text");
Nguồn trang chứa thẻ HTML có thể làm hỏng văn bản tìm kiếm của bạn và dẫn đến âm bản sai. Tôi thấy giải pháp này hoạt động giống như API isTextPresent của Selenium RC.
WebDriver driver = new FirefoxDriver(); //or some other driver
driver.findElement(By.tagName("body")).getText().contains("Some text to search")
làm getText và sau đó chứa không có hiệu suất. Bạn có thể muốn thu hẹp cây tìm kiếm bằng cách sử dụng WebElement cụ thể hơn.
Selenium2 Mã Java cho isTextPresent (Selenium IDE Code) trong Junit4
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"));
}
Tôi đã viết các phương pháp sau đây:
public boolean isTextPresent(String text){
try{
boolean b = driver.getPageSource().contains(text);
return b;
}
catch(Exception e){
return false;
}
}
Các phương pháp trên được gọi như sau:
assertTrue(isTextPresent("some text"));
Nó hoạt động tốt.
assertTrue (boolean) và các phương thức khẳng định khác là từ JUnit? Tôi giả định rằng đây không phải là các gói java mặc định. – MKod
Bạn không nghĩ rằng sẽ có vấn đề hiệu suất với "driver.getPageSource(). Chứa (văn bản)". Tôi nghĩ rằng nó sẽ tìm kiếm toàn bộ văn bản của nguồn trang. Nếu đó là cách duy nhất để làm để tìm một văn bản cụ thể thì làm thế nào để bạn biện minh cho thời gian trôi qua và hiệu suất mã. Cảm ơn bạn đã đăng một câu hỏi hay. – MKod
@MKod: Tôi đồng ý với bạn. Nó có thể gây ra vấn đề hiệu suất vì nó tìm kiếm toàn bộ văn bản của một trang. Nó cần phải tìm ra một cách khác (s). Tôi đoán WebDriver sẽ được cải thiện từng ngày –
Kiểm tra xem văn bản có xuất hiện trong Ruby (cách tiếp cận người mới bắt đầu) hay không bằng cách sử dụng firefox làm trình duyệt mục tiêu.
1) Bạn cần tất nhiên để tải về và chạy selen tập tin máy chủ jar với một cái gì đó như:
java - jar C:\Users\wmj\Downloads\selenium-server-standalone-2.25.0.jar
2) Bạn cần cài đặt ruby, và trong thư mục bin của nó, chạy các lệnh để cài đặt ngọc thêm:
gem install selenium-webdriver
gem install test-unit
3) tạo ra một tập tin thử nghiệm it.rb chứa:
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) chạy ruby:
ruby test-it.rb
Các mã sau sử dụng Java trong WebDriver nên làm việc:
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]*$"));
Đây là soltion tốt, nhưng có vẻ nó không phải là chính xác tương đương - nhìn vào bình luận ở đây: http: // rostislav- matl.blogspot.com/2011/03/moving-to-selenium-2-on-webdriver-part.html –