๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

SQA/Automation

Selenium ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธํ•˜๊ธฐ clickAndHold ์‚ฌ์šฉ๋ฒ•

 

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•˜๊ณ , ์†์„ ๋–ผ์ง€ ์•Š๊ณ  ํด๋ฆญํ•˜๊ณ  ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. ์›นํŽ˜์ด์ง€ ๋“ฑ์„ ๋งˆ์šฐ์Šค๋กœ ๋“œ๋ž˜๊ทธํ•˜๋Š” ์‚ฌ์šฉ์ž ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

clickAndHold-์‚ฌ์šฉ๋ฒ•
clickAndHold ์‚ฌ์šฉ๋ฒ•

 

 

clickAndHold ( )

clickAndHold() ๋ฉ”์„œ๋“œ๋Š” ๋งˆ์šฐ์Šค๋กœ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํด๋ฆญํ•œ ํ›„ ์†์„ ๋–ผ์ง€ ์•Š๊ณ  ๋ˆ„๋ฅด๊ณ  ์žˆ๋Š” ๋™์ž‘์„ ์‹œ๋ฎฌ๋ ˆ์ดํŠธํ•œ๋‹ค. ๋“œ๋ž˜๊ทธ์•ค๋“œ๋ž ๋™์ž‘์„ ํ•˜์—ฌ ์›น ์—˜๋ฆฌ๋จผํŠธ ์š”์†Œ๋ฅผ ์˜ฎ๊ธธ ๋•Œ๋‚˜, ๋“œ๋ž˜๊ทธํ•˜์—ฌ ํŠน์ • ์˜์—ญ์„ ์„ ํƒํ•  ๋•Œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž. ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์–ด๋–ค ์‹ ๋ฌธ๊ธฐ์‚ฌ์˜ title์„ ๋“œ๋ž˜๊ทธํ•ด ๋ธ”๋ก์„ ์žก์•„๋ณผ ๊ฒƒ์ด๋‹ค. clickAndHold()์™€ moveByOffset()์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜์—ฌ, ๋งˆ์šฐ์Šค๋ฅผ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ ์ด๋™ํ•˜์—ฌ ๋“œ๋ž˜๊ทธํ•˜๋Š” ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

moveByOffset() ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๊ด€๋ จ ํฌ์ŠคํŠธ(๋งํฌ)๋ฅผ ์ฐธ์กฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

@Test
  public void f() {
	  //์š”์ฆ˜ ๊ด€์‹ฌ์žˆ๋Š” ๋ถ€๋™์‚ฐ ๊ด€๋ จ ๊ธฐ์‚ฌ๋กœ ์ด๋™~
	  driver.get("https://post.naver.com/viewer/postView.naver?memberNo=11466887&volumeNo=34688039");
	  
	  Actions actions = new Actions(driver);
	 
	  //ํƒ€์ดํ‹€ ์˜์—ญ์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ xpath๋ฅผ ์ด์šฉํ•ด ๊ฐ€์ ธ์˜จ๋‹ค.
	  WebElement title = driver.findElement(
           By.xpath("//*[@id=\"SEDOC-1666756776571--1769050777\"]/div[3]/div/div/div[2]/div/div/div/h3")
      );
	  
		// ํƒ€์ดํ‹€์˜ ์˜์—ญ์„ ์กฐ์‚ฌํ•ด์„œ ๋งˆ์šฐ์Šค ์ขŒํ‘œ๋ฅผ ์ด๋™ํ•œ๋‹ค.
	  actions.moveByOffset(title.getLocation().getX(), title.getLocation().getY()+2)
	  		.clickAndHold()
	  		.moveByOffset(700, 70)
	  		.perform();
	  
}

์ฝ”๋“œ-์ˆ˜ํ–‰-๊ฒฐ๊ณผ-ํ™”๋ฉด
์ฝ”๋“œ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ

 

 

 

์›น์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” clickAndHold

์—˜๋ฆฌ๋จผํŠธ์˜ ์ขŒํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹ , ์—˜๋ฆฌ๋จผํŠธ๋ฅผ clickAndHold ๋ฉ”์„œ๋“œ์˜ ์ธ์ž๋กœ ์ฃผ์–ด ๋“œ๋ž˜๊ทธ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ์˜ˆ์ œ๋ฅผ ๋ณ€ํ˜•ํ•ด ๋ณด์ž.

 

@Test
  public void f() {
	  //์š”์ฆ˜ ๊ด€์‹ฌ์žˆ๋Š” ๋ถ€๋™์‚ฐ ๊ด€๋ จ ๊ธฐ์‚ฌ๋กœ ์ด๋™~
	  driver.get("https://post.naver.com/viewer/postView.naver?memberNo=11466887&volumeNo=34688039");
	  
	  Actions actions = new Actions(driver);
	 
	  //ํƒ€์ดํ‹€ ์˜์—ญ์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ xpath๋ฅผ ์ด์šฉํ•ด ๊ฐ€์ ธ์˜จ๋‹ค.
	  WebElement title = driver.findElement(
        By.xpath("//*[@id=\"SEDOC-1666756776571--1769050777\"]/div[3]/div/div/div[2]/div/div/div/h3")
      );
	  
	  // ํƒ€์ดํ‹€์˜ ์˜์—ญ์„ ์กฐ์‚ฌํ•ด์„œ ๋งˆ์šฐ์Šค ์ขŒํ‘œ๋ฅผ ์ด๋™ํ•œ๋‹ค.
	  actions.clickAndHold(title)
	  		.moveByOffset(340, 50)
	  		.perform();
	  
}

 

๊ฒฐ๊ณผ๊ฐ€ ์œ„ ์˜ˆ์ œ ์™€๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋‘๋ฒˆ์งธ-์˜ˆ์ œ-์ˆ˜ํ–‰-๊ฒฐ๊ณผ
๋‘๋ฒˆ์งธ ์˜ˆ์ œ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ

title.getLocation().getX()/getY() ๋กœ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด title์˜์—ญ์˜ ๊ฐ€์žฅ ์™ผ์ชฝ/๊ฐ€์žฅ ์œ„์˜ ์ขŒํ‘œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , title ๊ฐ์ฒด๋ฅผ ์ธ์ž๋กœ ์ฃผ์–ด ์ด๋™ํ•˜๋ฉด ์—˜๋ฆฌ๋จผํŠธ์˜ ์ค‘๊ฐ„ ์œ„์น˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

 

์ด ๋ถ€๋ถ„์€ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑ์„ ํ•  ๋•Œ, ์ ์ ˆํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

 


ํ•จ๊ป˜ ๋ณด๋ฉด ์ข‹์€ ๊ธ€

Selenium ๋งˆ์šฐ์Šค ์ด๋™ํ•˜๊ธฐ MoveByOffset ์‚ฌ์šฉ๋ฒ•, Java

Selenium ๋งˆ์šฐ์Šค ํด๋ฆญ ์•ก์…˜ Click ์‚ฌ์šฉ๋ฒ•