2012-04-26 8 views
2

Perl 바인딩을 사용하여 Selenium 드라이버를 실행하려고합니다. 예제와 문서가 부족하기 때문에 일부로드 블록을 실행하고 있습니다. 몇 가지 기본 작업을 수행하는 방법을 알아 냈지만, Remote::Driver 패키지를 사용하여 페이지의 텍스트를 확인하는 것과 같은 간단한 작업으로 몇 가지 문제가있는 것으로 보입니다. 나는 이런 식으로 뭔가를 시도하면Perl을 사용하는 Selenium WebDriver

은 :

$sel->get("https://www.yahoo.com/"); 
$ret = $sel->find_element("//div[contains(text(),'Thursday, April 26, 2012')]"); 

을 나는 메시지를 다시 얻을 요소를 찾을 수 없음. 나는 xpath를 사용하고 있는데, 왜냐하면 드라이버 패키지에 텍스트 찾기를위한 서브가 필요하지 않기 때문이다.

내 xpath 설정이 잘못되었거나 누군가가 더 좋은 방법을 알고 있다면 매우 유용 할 것입니다. 일부 버튼을 클릭해도 문제가 발생합니다. 그러나이 작업이 더 쉬워 져서 나를 괴롭 히고있는 것처럼 보입니다. 다음과 같이

+2

당신이 도움이 필요로하는 구체적인 문제를 설명하면이 질문이 유용 할 수 있습니다. 지금까지 가지고있는 코드와 테스트 할 예제 웹 페이지를 보여줍니다. ([How to ask] (http://stackoverflow.com/questions/how-to-ask) 및 사이트 [FAQ] (http://stackoverflow.com/faq)를 참조하십시오. – daxim

+0

일반적으로 조언하는 것은 Firefox 용 Selenium-ide를 선택하고 Perl 코드를 생성하도록 설정하십시오. 그런 다음 주변을 클릭하면 적절한 코드를 생성하여 수행중인 작업을 기록합니다 (가능한 여러 언어로). 적어도 당신이해야 할 일의 견고한 예를 제공 할 것입니다. – frankc

+0

실제로 그것을 만들었지 만 발견 된 생성기는 WWW :: Selenium 패키지에서만 작동합니다. Selenium Webdriver에 사용되는 새로운 Remote :: Driver 라이브러리가 아닙니다. 멋지게 작동하지만 기능은 완전히 다릅니다. . 다른 것이 있습니까? 또한, 나는 그것을 xpath와 함께 현재 작동하도록 할 수 있었다. 나는 내 사이트에 대한 데이터를 바꿔 치기 시작한 것과 그렇지 않은 것을 알지 못합니다. 부분 텍스트를 찾지 못하는 것 같지만, 그렇다고 나는 생각합니다.누군가가 IDE 용 웹 드라이버 포매터를 알고 있다면 링크를 매우 고맙게 생각합니다! – dubus

답변

1

웹 페이지에서 텍스트를 찾기 및 셀레늄을 사용하여 일부 "알려진 좋은 가치"에 해당 텍스트를 비교 :: 원격 :: 드라이버가 구현 될 수 있습니다

파일 : SomeWebApp.pm

package SomeWebApp; 

sub get_text_present { 

    my $self = shift; 
    my $target = shift; 
    my $locator = shift; 

    my $text = $self->{driver}->find_element($target, $locator)->get_text(); 

    return $text; 

} 
테스트 스크립트에

어딘가에 : test.pl

my $text = $some_web_app->get_text_present("MainContent_RequiredFieldValidator6", "id"); 

위는 변수 $ 테에서 $ 로케이터 저장을에 의해 식별 된 위치 결정 방식을 사용 $ 목표로 식별되는 요소를 찾아 xt. 그런 다음이를 사용하여 필요/필요에 따라 비교/검증 할 수 있습니다.

0

https는 http보다 조금 느립니다. WebDriver는 요청한 페이지가 완전히로드 될 때까지 기다리는 것이 좋지만, 여기에 약간의 도움을 주어야합니다. 수면 (2 개) 추가;을 get() 호출 후에 찾아서 제대로 작동하는지 확인하십시오. 그럴 경우 1 초로 줄이십시오. 또한 get_title 호출을 사용하여 생각한 페이지를로드했는지 확인할 수 있습니다.

다른 가능성은 텍스트 타겟이 이 아니며 페이지의 내용과 정확히 동일하다는 것입니다. "4 월"과 같은 단어 하나를 먼저보고, 히트를 얻었는지 확인한 다음 불일치를 찾을 때까지 확장 할 수 있습니다 (예 :이 문자열에 실제로 개행 문자가 있거나 끊어지는 지 여부). HTML 엔티티 (non-breaking space)와 같은 엔티티? 또한 div 아래에있는 모든 텍스트를 찾고 있습니다 (모든 자식 텍스트가 연결되어 검색이 완료 됨). 그렇게하면 아무것도 얻지 못할 때보 다 넷을 너무 많이 던질 확률이 높아지지만 알만한 가치가 있습니다.

관련 문제