2014-12-08 8 views
1

나는 td를 검사하려고합니다.Watin이 특정 유형으로 물체를 넣을 수 없습니다.

string tdSelector = "#myTD"; 
TableCell td = ie.Element(Find.BySelector(tdSelector)) as TableCell; 

이것은 캐스팅 때문에 null을 반환합니다. 따라서 다음 코드

Element elm = ie.Element(Find.BySelector(tdSelector)); 

은 잘 작동합니다. 는 'WatiN.Core.ElementContainer`1은 [WatiN.Core.Element]'형식의 개체를 캐스팅 할 수 없습니다 입력하는 '

은 또한 더 elm.TagName는 "TD"를 반환

TableCell td = (TableCell)ie.Element(Find.BySelector(tdSelector)); 

에서 오류가 발생합니다 WatCN.Core.TableCell '.

개체가 거기에 있으므로 얻을 수는 있지만 TableCell 개체로 처리 할 수는 없습니다. 거기에 메서드가 표시됩니다. 마찬가지로 <> 시도 .As <TableCell>()도 작동하지 않습니다.

아이디어가 있으십니까? 내 목표는 TableCell 개체를 얻는 것입니다.

답변

0

지금까지 프레임 워크를 실제로 망가 뜨리지 않고서는 이것이 가능하지 않다는 것을 알 수 있습니다. 상자 밖에서는 이것을 수행하도록 설계되지 않았습니다 (지금까지 내가 말할 수있는 한). 이상적으로 당신이 그것을 던지 려하지 않고 밖으로 원하는 개체를 얻을.

ie.TableCell(Find.BySelector(tdSelector)) 
0

다음과 같은 방법으로 테이블의 모든 테이블 세포를 얻을 수 있습니다 :이 도움이

foreach (TableRow tr in details.TableRows) 
    { 
     TableCellCollection tcs = tr.TableCells; 
     for (int b = 0; b < tcs.Count; b++) 
     { 
      // each cell for each row and search whatever you need in here. 
     } 
    } 

희망을.

+0

질문의 핵심은 Element를 TableCell과 같은 다른 유형의 객체로 변환하는 방법입니다. 나는 이것이 불가능하다고 믿는다. –

2

나는 이것에 대해서도 궁금해했고, 마침내 길을 찾았습니다. Element을 HTML 태그 고유의 클래스에 캐스트 할 수는 없지만 새로 TableCell을 만들고 Element을 사용하여 새 태그를 생성 할 수 있습니다. Element하지 실제로 테이블 셀의 경우

Element element = ie.Element("someId"); 
TableCell cell = new TableCell(element.DomContainer, element.NativeElement); 

이 예외를 던질 표시되지 않습니다.

+0

이렇게하면 셀 객체를 편집하면 변경 내용이 페이지에 반영됩니까? –

+0

나는 확인을했다. 그것을 밖으로보십시오 :) –