2017-04-12 18 views
0

비슷한 주제가 here이고 예제를 따라했지만 솔루션이 작동하지 않는 것 같습니다.Ruby Webdriver ActionClass double_click가 작동하지 않습니다.

here 문서를 사용하여 요소를 두 번 클릭하려고합니다. 내가 다음 코드의 다음 줄이 @article_zone = "nbviewer-zone-overlay-13B27E79C7BC32F1"

를 할당

@article_zone = @driver.find_element(:id, "nbviewer-zone-overlay-13B27E79C7BC32F1").attribute("id") 

:

나는 다음과 같은 코드가

@driver.action.double_click("id=" + @article_zone).perform

을하지만,이 라인은 다음과 같은 오류를 던지고있다 : Error: TypeError: expected Selenium::WebDriver::Element, got "id=nbviewer-zone-overlay-13B27E79C7BC32F1":String

요소 id=nbviewer-zone-overlay-13B27E79C7BC32F1은 두 번 클릭하려는 것입니다. 나는 왜 내가이 오류를 받는지를 놓치고있다.

모든 도움을 주시면 대단히 감사하겠습니다. 보고 주셔서 감사합니다! 이 작업을 수행 할 때

+0

"작동하지 않는 것 같습니다"라고 말하는 것만으로는 충분하지 않습니다. 기존 솔루션이 작동하지 않는 이유는 무엇입니까? – coreyward

+0

좋은 질문 - 그게 내가 결정하려고하는 것입니다. 나는 예제를 올바르게 따라했지만 아직 오류를 받고있는 것으로 보입니다. 기존 솔루션 게시물은 제대로 작동한다고 했으므로 그 게시물 이후 1 년이 넘었고 상황이 바뀌어서 (버전/드라이버/기타 등) 정확히 파악할 수 없기 때문에 내 상황에 어떤 문제가 있는지 파악하려고합니다. 나는 이것에 초보자입니다. –

답변

0

문제입니다. 요소를 검사 할 때 요소의 가운데가 "fold"아래에 숨겨집니다. 이 문제를 해결하려면 오프셋 (왼쪽 상단)을 사용하여 요소로 이동하여 자리에서 더블 클릭을 수행 할 수 있습니다.

@driver.action.move_to(@article, 10, 10).double_click.perform 
0

:

@driver.action.double_click("id=" + @article_zone).perform 

당신은 String의 인스턴스에 + 메서드를 호출합니다. 암시 적으로 @article_zone을 문자열로 변환하고 "id="에 추가하려고합니다. 그 문자열은 Selenium::WebDriver::Element의 인스턴스를 기대하는 double_click 메서드로 전달됩니다.

난 당신이 "id=" +를 제거하면 당신은 괜찮을 것이라고 생각 : 기본적으로 double_click이 요소의 가운데를 클릭하려고하기 때문에

@driver.action.double_click(@article_zone).perform 
+0

빠른 응답을 보내 주셔서 감사합니다 - 내가 그걸 시도하면 같은 오류가 발생합니다. 'Error : TypeError : 예상 된 Selenium :: WebDriver :: Element, "nbviewer-zone-overlay-13B27E79C7BC32F1"을 얻었습니다. : String' 오류에 따라'String'을 선호하지 않는다고 생각했지만 어떻게해야하는지 잘 모르겠습니다. 찾고있는'Selenium :: WebDriver :: Element'로 변환하십시오. –

+0

또한이'@article_zone = @ driver.find_element (: id, "nbviewer-zone-overlay-13B27E79C7BC32F1")'와 같은'속성'없이 코드의 첫 번째 행을 시도했지만'@ article_zone'을'# < 셀레늄 :: WebDriver :: 요소 : 0x..f3c886a24 id = "0.3165787053371305-3">'. 이렇게해도 오류는 발생하지 않지만 더블 클릭을 수행하지 않습니다. 기본적으로 아무 것도하지 않는 단계를 건너 뜁니다. –

+0

@ 가브리엘 킬러 (GabrielKlueh) 올바른 대상 유형이므로 원하는대로 할 수 있습니다.다음 단계로 넘어갔습니다 : double_click에서 예상되는 결과를 얻지 못하는 이유를 알아 냈습니다. 그냥 쓰레기를 넘겨서 작업을 시작할 수는 없습니다. ;) – coreyward