php webdriver 处理 chrome 浏览器的弹窗alert以及剪切板权限弹窗
创建webdriver chrome 实例
$options = [
'--no-sandbox', // 解决DevToolsActivePort文件不存在的报错
'window-size=1400,1000', // 指定浏览器分辨率
// '--disable-gpu', // 谷歌文档提到需要加上这个属性来规避bug
// '--hide-scrollbars', // 隐藏滚动条, 应对一些特殊页面
// 'blink-settings=imagesEnabled=false', // 不加载图片, 提升速度
'--ignore-certificate-errors',
'--ignore-ssl-errors',
'--unlimited-storage', //存储权限
//'--headless', // 浏览器不提供可视化页面
];
$capabilitiesOptions = array_merge([
WebDriverCapabilityType::BROWSER_NAME => WebDriverBrowserType::CHROME,
WebDriverCapabilityType::PLATFORM => WebDriverPlatform::ANY,
], $capabilitiesOptions);
$capabilities = new DesiredCapabilities($capabilitiesOptions);
$host = 'http://127.0.0.1:9151'; //chrome服务器地址
$chromeOptions = new ChromeOptions();
$chromeOptions->addArguments($options);
// $options->setExperimentalOption('useAutomationExtension',false);
$chromeOptions->setExperimentalOption('excludeSwitches', ['enable-automation', 'enable-logging']);
//处理权限弹窗
$prefs = [
'profile.default_content_setting_values' => [
'clipboard' => 1,
'notifications' => 2,
]
];
$chromeOptions->setExperimentalOption('prefs', $prefs);
$capabilities->setCapability(ChromeOptions::CAPABILITY, $chromeOptions);
$driver = RemoteWebDriver::create($host, $capabilities);剪贴板通知桌面通知权限弹窗处理
$prefs = [
'profile.default_content_setting_values' => [
'clipboard' => 1,
'notifications' => 2,
]
];
$chromeOptions->setExperimentalOption('prefs', $prefs);alert, confirm, prompt 弹窗
1、Selenium中的WebDriver对象提供了switch_to_alert()方法定位(捕获)到各种弹窗(alert、confirm、prompt)
2、WebDriver对象在处理弹框时主要有以下几种方法:
⑴ switch_to_alert():定位弹出的对话框
⑵ text:获取对话框文本值
⑶ accept():相当于点击"确认"
⑷ dismiss():相当于点击"取消"
⑸ send_keys():输入值,该方法只能在prompt类弹框中使用
//点确定按钮
$driver->switchTo()->alert()->accept()