WPF로 Selenium 을 "버튼"으로 컨트롤하는법
조회수 1603회
보통 콘솔창으로 사용할때는 문제가안되었는데 WPF로 구현하려니 '메인윈도우' 실행이 끝나면 IWebdriver 를 놓아버리더라구요 그래서 '버튼'들이 객체참조가 끊어져버립니다
아래의 소스가 문제되는 소스입니다 (버튼1,버튼2 핸들러가 driver를 찾지못함)
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// 시크릿모드옵션
ChromeOptions opt = new ChromeOptions();
opt.AddArgument("--incognito");
// 커맨드창숨김
ChromeDriverService ser = ChromeDriverService.CreateDefaultService();
ser.HideCommandPromptWindow = true;
// 셀레니움실행
IWebDriver driver = new ChromeDriver(ser, opt);
}
private void b1_Click(object sender, RoutedEventArgs e)
{
driver.Url = "http://naver.com";
}
private void b2_Click(object sender, RoutedEventArgs e)
{
// TV버튼클릭
driver.FindElement(By.XPath("//*[@id='svc.tvcast']/span")).Click();
}
}
그래서
아래처럼 IWebdriver를 '메인윈도우' 바깥으로 끄집어내면 일단은 되긴됩니다
그런데 각종옵션들을 참조할수없게됩니다 (시크릿모드, 커맨드창숨김)
전부 다같이 빼버리면 옵션들은 밖으로 나오면 구문에러가 나구요ㅠㅠ
이문제를 해결을 어떻게 하면좋을까요?
public partial class MainWindow : Window
{
// 셀레니움실행 --------------얘를 밖으로 뺌@@@@@@@@
IWebDriver driver = new ChromeDriver(ser, opt);
public MainWindow()
{
InitializeComponent();
// 시크릿모드옵션
ChromeOptions opt = new ChromeOptions();
opt.AddArgument("--incognito");
// 커맨드창숨김
ChromeDriverService ser = ChromeDriverService.CreateDefaultService();
ser.HideCommandPromptWindow = true;
}
private void b1_Click(object sender, RoutedEventArgs e)
{
driver.Url = "http://naver.com";
}
private void b2_Click(object sender, RoutedEventArgs e)
{
// TV버튼클릭
driver.FindElement(By.XPath("//*[@id='svc.tvcast']/span")).Click();
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
이미 처리 하셨는지 모르겠지만... 아래처럼 해보시면 어떨까요~?
public partial class MainWindow : Window { // 셀레니움실행 --------------얘를 밖으로 뺌@@@@@@@@ IWebDriver driver; public MainWindow() { InitializeComponent(); // 시크릿모드옵션 ChromeOptions opt = new ChromeOptions(); opt.AddArgument("--incognito"); // 커맨드창숨김 ChromeDriverService ser = ChromeDriverService.CreateDefaultService(); ser.HideCommandPromptWindow = true; driver = new ChromeDriver(ser, opt); } private void b1_Click(object sender, RoutedEventArgs e) { driver.Url = "http://naver.com"; } private void b2_Click(object sender, RoutedEventArgs e) { // TV버튼클릭 driver.FindElement(By.XPath("//*[@id='svc.tvcast']/span")).Click(); } }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력