2016-12-04 2 views
-1

Я использую selenium-webdriver с nodejs, чтобы отказаться от страницы. Один элемент страницы - это captcha, который я хочу захватить. Я искал, но я только нашел коды java или python для этого.Selenium webdriver nodejs - Как обрезать изображение

До сих пор я получил:

function writeScreenshot(data, name) { 
    name = name || 'ss.png'; 
    var screenshotPath = '/Users/Projects/screenshots/'; 
    fs.writeFileSync(screenshotPath + name, data, 'base64'); 
}; 

driver.takeScreenshot().then(function(data) { 
    writeScreenshot(data, 'out1.png'); 
}); 

//location of captcha 
var capt = driver.findElement(webdriver.By.xpath('myXPath'); 
var location = capt.getLocation(); 
var captAltura = capt.getSize().getHeight(); 
var captLargura = capt.getSize().getWidth(); 

скриншот страницы работает. Вторая часть, где установлено «// location captcha», я не уверен, потому что я не знаю, как продолжить. Как я могу обрезать изображение?

- Update (Html ​​код):

<form name="form" method="POST"> 
<table width="750" cellspacing="0" cellpadding="0" border="0"> 
    <tbody> 
    <tr bgcolor="#CCCCCC"> 
     <td width="100%" height="31" align="center"> 
     <font class="code">Code:</font> 
     <input type="text" name="captcha" size="4" maxlength="4" value="" title="Security Code" class="inputcaptcha" onclick="this.select()"> 
     <img src="captcha.php" width="90" align="middle"> 
     </td> 
    </tr> 
    </tbody> 
</table> 
</form> 
+0

Возможно, вам нужно изменить 'myXPath'' на xpath для captcha. – Ouroborus

+0

@Ouroborus Ну, я только что отредактировал вопрос. В коде xpath правильный. Как только я получил всю эту информацию, как я могу обрезать весь скриншот веб-страницы, чтобы просто перехватить? –

+0

Вы не можете. У вас есть две разные вещи. Первая часть вашего кода - это скриншот страницы. Это не особенно полезно в отношении капчей. Последняя часть пытается найти изображение captcha на странице. Для этого найдите элемент изображения captcha, извлеките URL для изображения, извлеките изображение отдельно. – Ouroborus

ответ

0

Я закончил с использованием библиотеки easyimage. Ссылка: https://stackoverflow.com/a/32111192/3383534

Сначала вы снимаете скриншот страницы отверстия, а затем обрезаете нужный элемент.

Вот как я это сделал:

function cropInFile (valorWidth, valorHeight, valorX, valorY, srcFile){ 
    easyimg.crop(
     { 
      src: pathFile, 
      dst: pathFile, 
      cropwidth: valorWidth, 
      cropheight: valorHeight, 
      x: valorX, 
      y: valorY, 
      gravity: 'North-West' 
     }, 
     function(err, stdout, stderr) { 
      if (err) throw err; 
     } 
    ); 
}; 

Эти параметры: valorWidth, valorHeight, valorX, Valory являются для элемента, который вы хотите. И последний - первый снимок экрана.

Смежные вопросы