<p>我们有类似的需求,使用Selenium WebDriver开发chrome插件。正如“@Aleksandar Popovic”所说,我们不能用WebDriver点击chrome扩展图标,因为图标已经从网页中消失了。</p>
<p>我们使用<a href="http://www.sikuli.org/" rel="nofollow">sikuli</a>(使用图像识别的自动化工具)来单击chrome插件。之后,加载项弹出窗口将是另一个浏览器窗口,因此使用切换窗口对加载项弹出窗口执行操作。</p>
<p>下面是<strong>Java</strong>中使用<strong>Selenium Webdriver</strong>和<strong>Sikuli</strong>的示例代码。</p>
<p>Sikuli将基于图像识别运行。在运行代码之前,chrome浏览器的屏幕截图并将其裁剪,以便在图像中只有插件可用。将该图像另存为“AddonIcon.png”。</p>
<p>Sikuli将在屏幕上匹配该图像(在我们的例子中是AddonIcon.png),并在其上模拟单击操作。</p>
<pre><code>import java.io.File;
import java.util.List;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.sikuli.script.App;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Pattern;
import org.sikuli.script.Screen;
public class PageTest {
public static void main(String[] args) {
// Opening chrome with that addon
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("Path to ur chrome addon (.cxt file)"));
System.setProperty("webdriver.chrome.driver", "path to chromedriver.exe");
WebDriver driver = new ChromeDriver(options);
driver.manage().window().maximize();
// Creating object to the Sukali screen class
Screen s=new Screen();
//Finding and clicking on the Addon image
try {
s.find("Path to the 'AddonIcon.png'");
s.click("Path to the 'AddonIcon.png'");
} catch (FindFailed e) {
e.printStackTrace();
}
//Wait until new Addon popup is opened.
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.numberOfWindowsToBe(2));
// Switch to the Addon Pop up
String parentWindow= driver.getWindowHandle();
Set<String> allWindows = driver.getWindowHandles();
for(String curWindow : allWindows){
if(!parentWindow.equals(curWindow)){
driver.switchTo().window(curWindow);
}
}
/***********Ur code to work on Add-on popup************************/
}
}
</code></pre>
<p>我希望这对你有帮助。</p>