2012-06-11 13 views
9

Xin chào, tôi đang sử dụng selen để tự động kiểm tra trên các trang web. Tôi đang sử dụng selenium 2 và python và chỉ muốn có câu trả lời trong khung này. SO làm cách nào để kiểm tra xem một số văn bản có hiện diện hay không? Tôi đã thử tài sản bằng nhưng nó không hoạt động?Làm cách nào để kiểm tra xem một số văn bản có xuất hiện trên trang web bằng selenium 2 không?

assertEquals(driver.getPageSource().contains("email"), true); 
+0

Bối cảnh là một điều tuyệt vời ở đây - những gì bạn có nghĩa là nó không hoạt động? Làm thế nào nó không hoạt động? Nó làm gì? Đăng bản sao HTML của bạn, chỉ quanh phần tử bạn đang cố gắng nhận. Tại sao bạn đang quét nguồn trang ENTIRE cho điều đó? Bạn có thể cần quay lại bảng vẽ trên hướng dẫn của Selenium. – Arran

Trả lời

15

Bạn có thể sử dụng driver.page_source và một biểu thức chính quy đơn giản để kiểm tra xem văn bản tồn tại:

import re  
src = driver.page_source 
text_found = re.search(r'text_to_search', src) 
self.assertNotEqual(text_found, None) 
0

Bạn có thể thử một cái gì đó giống như

browser = webdriver.Firefox() 
browser.get(url) 
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'some link text'))) 

Về cơ bản các dòng trên khởi động Firefox, điều hướng đến url được chỉ định, khiến trình duyệt lưu giữ trong 10 giây, để một số url tải sau đó tìm kiếm một văn bản liên kết cụ thể, nếu không tìm thấy văn bản liên kết nào, thì TimeoutException sẽ là trigge màu đỏ.

Xin lưu ý số lượng dấu ngoặc vuông được sử dụng, bạn sẽ gặp lỗi nếu số dấu ngoặc không tương ứng như trên.

Để có thể chạy các tuyên bố trên, sau đây phải được công bố

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
6

Đối với những người bạn của những người vẫn quan tâm:

Generic Giải pháp

if (text in driver.page_source): 
    # text exists in page 

unittest:

assertTrue (text in driver.page_source) 

pytest:

assert (text in driver.page_source == True)