2015-11-26 16 views
9

Tôi đã sử dụng Appium để thử nghiệm một ứng dụng Android lai bao gồm chuyển đổi thường xuyên giữa bối cảnh NATIVE và WEBVIEW. Các Webviews này được phát triển bằng cách sử dụng thư viện React.Truy cập các yếu tố phản ứng bằng cách sử dụng Appium để tự động hóa

Để hiểu biết của tôi và chính xác cho tôi nếu tôi sai, How React Works là nó tạo ra một DOM ảo bằng cách sử dụng DOM thực và tạo ra một tên lớp động tương ứng với những người trong javascript. Diff Algorithm cung cấp cách hiệu quả để phân biệt các đối tượng bằng cách sử dụng các tên lớp được tạo tự động đó.


Vấn đề tôi đang phải đối mặt là sử dụng Appium Tôi không thể truy cập vào các yếu tố từ những webview sử dụng bất kỳ phương pháp findElementsBy. Tên lớp là tham số duy nhất hiển thị cho UIAutomator mà chúng ta thực sự có thể dựa vào được thay đổi bởi React trên mỗi bản dựng mới được tạo ra.

  1. Có cách nào để tôi có thể cấu trúc lại các tên lớp tự động tạo ra một số cái tên hợp lý bằng cách sử dụng thư viện riêng của mình Phản ứng?

Các chrome inspect cung cấp các chi tiết của webview trong ứng dụng của tôi như:

<div class="_32f8NoUfyUtNSxo3w4Ptbp" data-reactid=".0.1.$=13:0.0.0">…</div> 
  1. Bất kỳ ý tưởng về làm thế nào để truy cập vào các phần tử DOM thực tế sử dụng Appium cho trường hợp này?

Thông tin: WebView.setWebContentsDebuggingEnabled(true) được thiết lập trong các mã ứng dụng.

Sẽ đánh giá cao mọi khách hàng tiềm năng tại đây.

+0

Bạn đang sử dụng trình tải gói webpack cho các kiểu hay cách bạn soạn/biên dịch chúng? –

+0

@DanielSchmidt: Tôi không có nhiều bối cảnh về kết thúc biên dịch của các chế độ xem. Sẽ sớm cung cấp chi tiết. – nullpointer

Trả lời

3

Dựa vào liên kết này: https://github.com/facebook/react-native/issues/7135

Cách giải quyết cho vấn đề này: sử dụng cả hai tiếp cận và accessibleLabel trên quan điểm của bạn

DOC trên nhãn Accessiblity: https://facebook.github.io/react-native/docs/accessibility.html#accessibilitylabel-ios-android

On tôi phản ứng thành phần có nguồn gốc:

<TextInput accessible={true} accessibilityLabel={'Tap Me'}></TextInput> 

Trên tập lệnh của tôi Thử nghiệm:

mobileElement = find_Element(accessibilty_id, "Tap Me") 
mobileElement.send_keys "hello world" 
+0

Điều đó có nghĩa là sử dụng 'truy cập' và' accessiblityLabel' trong mã xem? Ngoài ra, tập lệnh bạn đã cung cấp, hoạt động với appium vì tôi chưa sử dụng bất kỳ thuộc tính nào như một công cụ chọn? – nullpointer

+0

có, tập lệnh của tôi hoạt động với Appium, nhưng chỉ dành cho thành phần có thuộc tính AccessibilityLabel. Sau khi đọc tài liệu gốc phản ứng, không phải tất cả thành phần gốc phản ứng đều có thuộc tính AccessibilityLabel.tôi thích sử dụng calabash cho thử nghiệm tự động trong phản ứng tự nhiên, trong calabash bạn có thể tìm thấy phần tử dựa trên chỉ mục của thành phần, văn bản bên trong thành phần, hoặc AccessibilityLabel – RobbyWH

Các vấn đề liên quan