Özellik özellikleri sayfa nesnelerine yeniden yazıyor ve fill_in
yöntemiyle ilgili bir sorunum var.Site Prism sayfa nesnesi üzerinde Capybara's fill_in çalışmıyor
Sayfa nesnesi:
class LoginPage < SitePrism::Page
set_url '/login'
section :navbar, NavbarSection, '.navbar-collapse'
section :drop_menu, DropMenuSection, '.popover-content'
element :email, 'input[name=email]'
element :password, 'input[type=password]'
element :submit, 'button[type=submit]'
element :help, 'a', text: "Help! I can't sign in"
end
Spec: giriş alanı, bu aşağıdaki gibi tanımlanır
require 'spec_helper'
feature 'Login', js: true do
let(:app) { App.new }
let(:login_page) { app.login }
scenario 'with invalid credentials results in error message' do
login_page.load
login_page.fill_in login_page.email, with: '[email protected]'
login_page.fill_in login_page.password, with: 'bad password'
login_page.submit.click
expect(login_page).to have_content 'Invalid credentials'
end
aşağıdaki gibidir:
kodu
<input class="form-control input-lg ng-pristine ng-untouched
ng-invalid ng-invalid-required" name="email"
ng-model="login.credentials.email" placeholder="Email"
required="" tabindex="0" aria-required="true"
aria-invalid="true">`
I testi yap, ben f ollowing hatası:
[2] pry(#<RSpec::ExampleGroups::Login>)> login_page.fill_in login_page.email,
with: '[email protected]'
Capybara::ElementNotFound: Unable to find field #<Capybara::Node::Element
tag="input" path="/html/body/div[1]/div/div/div/div/div[2]/div/form/div[1]/div/input">
Ancak bu alan bulunabilmesini:
[1] pry(#<RSpec::ExampleGroups::Login>)> login_page.email
=> #<Capybara::Node::Element tag="input"
path="/html/body/div[1]/div/div/div/div/div[2]/div/form/div[1]/div/input">
Ben CSS kullanıldığında fill_in
find
nasıl kullandığı ile bağlantılı olabileceğini tahmin.
Son kullanıcının bu formla nasıl etkileşime gireceğine mümkün olduğunca yaklaşmanın bir yolu var mı? login_page.email.set '[email protected]'
kullanmak istemiyorum, çünkü alan gerçekten tıklanabilir/doldurulabilir ve bazı öğeler tarafından gizlenmiyorsa set
ilgilenmez.
"[: name] sembolü, kodda sahip olabileceğiniz herhangi bir benzersiz giriş niteliğidir" ile ne demek istiyorsunuz? Esas olarak "girdi özniteliği" terimi ile mücadele ediyorum. Girdi öğesinden varolan bir özniteliği belirtmeniz gerektiğini mi kastediyorsunuz, bu yüzden ': name' den' ... name = 'password' ... '' komutunu seçtiniz mi? – Matthias
Ters çıktı yanlış html kodu yapıştırdım - Snippet'i e-posta alanına uyacak şekilde düzenledim ve parola değil :) Ve evet, bu öğe için benzersiz olan giriş öğesi için varolan bir özniteliği belirtirsiniz (sayfadaki başka bir öğe yoktur) – anks