2017-02-09 1 views
0

테스트 서버에서 전자 메일을 수집하는 전자 메일에 대한 Customer.io 계정이 있습니다. 요소가 필요한 iframe이 있습니다. 그러나 나는 그들에게 다가 갈 수 없다. 내가 사용하는 경우 : Customer.io의 iframe에있는 요소를 가져올 수 없습니다.

page.in_iframe(xpath: "//iframe[contains(@class, 'ember-view')]") do |frame| 
    page.cell_element(xpath: "//td[contains(text(), 'Order Confirmation')]", frame: frame).when_present(30) 
end 

는 그럼 다음 오류 얻을 :

SyntaxError: (eval):1: syntax error, unexpected tIDENTIFIER, expecting ')' 
.../iframe[contains(@class, 'ember-view')]').td(identifier) 
...        ^
(eval):1: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' 
...e[contains(@class, 'ember-view')]').td(identifier) 
...        ^
(eval):1: syntax error, unexpected ')', expecting end-of-input 
...ntains(@class, 'ember-view')]').td(identifier) 
... 

을 그리고 난이 사용하는 경우 : 다음

page.in_iframe(xpath: "//iframe[contains(@class, ember)]") do |frame| 
    page.cell_element(xpath: "//td[contains(text(), 'Order Confirmation')]", frame: frame).when_present(30) 
end 

을 나는이 오류가 발생하지 않지만 요소가되지 수 찾을 수 있습니다.

답변

0

문제는 iframe XPath 문자열을 구문 분석 할 때 발생하는 것으로 보입니다. 인터프리터가 문제가되는 이유를 이해하지 않지만, 여기에 몇 가지 솔루션입니다 : 첫 번째 예를 들어

은 문자열의 바깥 부분으로 작은 따옴표를 사용하는 스위치 :

page.in_iframe(xpath: '//iframe[contains(@class, "ember-view")]') do |frame| 
    page.cell_element(xpath: "//td[contains(text(), 'Order Confirmation')]", frame: frame).when_present(30) 
end 

두 번째 예를 들어, , 속성 값을 인용해야합니다. 당신이 문자열에 큰 따옴표를 고수 할 경우, 내부 따옴표 탈출 할 수

page.in_iframe(class: 'ember-view') do |frame| 
    page.cell_element(text: /Order Confirmation/, frame: frame).when_present(30) 
end 
: 또는

page.in_iframe(xpath: "//iframe[contains(@class, \"ember\")]") do |frame| 
    page.cell_element(xpath: "//td[contains(text(), 'Order Confirmation')]", frame: frame).when_present(30) 
end 

을, 다른 로케이터를 사용하여 XPath에 문제를 피하는 것을 고려할 수 있습니다

0

는 나는 다른 방법을 발견했습니다

@browser.iframe(xpath: "//iframe[contains(@class,'ember')]").td(xpath: "//td[contains(text(), 'Order Confirmation')]") 

그 예는 작동하지 않기 때문에. 이유를 모르겠다.

하지만 덕분에 저스틴

: Watir과의 목표 중

1

하나는 XPath를 사용할 필요가 없습니다 것입니다.

@browser.iframe(class: /ember/).td(text: /Order Confirmation/) 
+0

감사합니다,하지만 내 예를 작동 :

이 같은 정규 표현식을 사용하여 로케이터를 다시 작성. 그리고 당신도 일합니다. –

+0

나는 Watir과 함께 XPath를 사용하는 것이 일반적으로 좋은 습관이 아니라는 것을 말하는 것이 아닙니다. – titusfortner

관련 문제