今天遇到一个问题,想要点击某个控件的某个位置(左上,左下,右上,右下,中间),稍微做了封装,具体代码如下,有不妥欢迎指出:
<span class="cm">/**
* 单个手指,点击屏幕某个控件位置(左上,左下,右上,右下,中间)
*/</span>
<span class="kd">public</span> <span class="kd">enum</span> <span class="n">Location</span> <span class="o">{</span>
<span class="n">UPLEFT</span><span class="o">,</span> <span class="n">LOWLEFT</span><span class="o">,</span> <span class="n">UPRIGHT</span><span class="o">,</span> <span class="n">LOWRIGHT</span><span class="o">,</span> <span class="n">CENTRE</span>
<span class="o">}</span>
<span class="cm">/**
* 点击控件某个地方
*
* @param step
* @param by
* @param location
*/</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="n">clickControl</span><span class="o">(</span><span class="n">String</span> <span class="n">step</span><span class="o">,</span> <span class="n">By</span> <span class="n">by</span><span class="o">,</span> <span class="n">Location</span> <span class="n">location</span><span class="o">)</span> <span class="o">{</span>
<span class="n">log</span><span class="o">.</span><span class="na">info</span><span class="o">(</span><span class="n">step</span><span class="o">);</span>
<span class="c1">// 获取控件开始位置的坐标轴</span>
<span class="n">Point</span> <span class="n">start</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">driver</span><span class="o">,</span> <span class="n">by</span><span class="o">).</span><span class="na">getLocation</span><span class="o">();</span>
<span class="kt">int</span> <span class="n">startX</span> <span class="o">=</span> <span class="n">start</span><span class="o">.</span><span class="na">x</span><span class="o">;</span>
<span class="kt">int</span> <span class="n">startY</span> <span class="o">=</span> <span class="n">start</span><span class="o">.</span><span class="na">y</span><span class="o">;</span>
<span class="c1">// 获取控件坐标轴差</span>
<span class="n">Dimension</span> <span class="n">q</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="na">findElement</span><span class="o">(</span><span class="n">driver</span><span class="o">,</span><span class="n">by</span><span class="o">).</span><span class="na">getSize</span><span class="o">();</span>
<span class="kt">int</span> <span class="n">x</span> <span class="o">=</span> <span class="n">q</span><span class="o">.</span><span class="na">getWidth</span><span class="o">();</span>
<span class="kt">int</span> <span class="n">y</span> <span class="o">=</span> <span class="n">q</span><span class="o">.</span><span class="na">getHeight</span><span class="o">();</span>
<span class="c1">// 计算出控件结束坐标</span>
<span class="kt">int</span> <span class="n">endX</span> <span class="o">=</span> <span class="n">x</span> <span class="o">+</span> <span class="n">startX</span><span class="o">;</span>
<span class="kt">int</span> <span class="n">endY</span> <span class="o">=</span> <span class="n">y</span> <span class="o">+</span> <span class="n">startY</span><span class="o">;</span>
<span class="k">switch</span> <span class="o">(</span><span class="n">location</span><span class="o">)</span> <span class="o">{</span>
<span class="c1">// 左上 点击</span>
<span class="k">case</span> <span class="nl">UPLEFT:</span>
<span class="n">driver</span><span class="o">.</span><span class="na">tap</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">startX</span> <span class="o">+</span> <span class="mi">10</span><span class="o">,</span> <span class="n">startY</span> <span class="o">+</span> <span class="mi">10</span><span class="o">,</span> <span class="mi">100</span><span class="o">);</span>
<span class="n">TaquTools</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">2</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="c1">// 右上 点击</span>
<span class="k">case</span> <span class="nl">UPRIGHT:</span>
<span class="n">driver</span><span class="o">.</span><span class="na">tap</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">endX</span> <span class="o">-</span> <span class="mi">10</span><span class="o">,</span> <span class="n">startY</span> <span class="o">+</span> <span class="mi">10</span><span class="o">,</span> <span class="mi">100</span><span class="o">);</span>
<span class="n">TaquTools</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">2</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="c1">// 左下 点击</span>
<span class="k">case</span> <span class="nl">LOWLEFT:</span>
<span class="n">driver</span><span class="o">.</span><span class="na">tap</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">startX</span> <span class="o">+</span> <span class="mi">10</span><span class="o">,</span> <span class="n">endY</span> <span class="o">-</span> <span class="mi">10</span><span class="o">,</span> <span class="mi">100</span><span class="o">);</span>
<span class="n">TaquTools</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">2</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="c1">// 右下 点击</span>
<span class="k">case</span> <span class="nl">LOWRIGHT:</span>
<span class="n">driver</span><span class="o">.</span><span class="na">tap</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">endX</span> <span class="o">-</span> <span class="mi">10</span><span class="o">,</span> <span class="n">endY</span> <span class="o">-</span> <span class="mi">10</span><span class="o">,</span> <span class="mi">100</span><span class="o">);</span>
<span class="n">TaquTools</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">2</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="c1">// 中间 点击</span>
<span class="k">case</span> <span class="nl">CENTRE:</span>
<span class="n">driver</span><span class="o">.</span><span class="na">tap</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="o">(</span><span class="n">endX</span> <span class="o">+</span> <span class="n">startX</span><span class="o">)</span> <span class="o">/</span> <span class="mi">2</span><span class="o">,</span> <span class="o">(</span><span class="n">endY</span> <span class="o">+</span> <span class="n">startY</span><span class="o">)</span> <span class="o">/</span> <span class="mi">2</span><span class="o">,</span> <span class="mi">100</span><span class="o">);</span>
<span class="n">TaquTools</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">2</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>