我正在尝试使用webdriverIO(Selenium)禁用chrome剪贴板弹出/通知以实现自动化。我尝试设置chrome选项,但它仍然没有禁用它。我想单击此弹出窗口后面的Web元素,因此我不希望此弹出窗口出现在自动化中。我尝试手动禁用剪贴板设置,但selenium每次都会打开一个新会话,刷新设置。此外,无法使用开发人员工具进行检查。这不是警报,因此接受/解除警报也不起作用。
browser.alertAccept();
或
browser.alertDismiss();
chromeOptions: {
args: [
'disable-infobars',
'disable-popup-blocking',
'disable-notifications'
],
prefs: {
'profile.default_content_settings.popups' : 2,
'profile.default_content_settings.notifications' : 2,
}
}
请帮助我解决这个问题,非常感谢任何帮助。
答案 0 :(得分:0)
解决方法可能是切换到弹出窗口并将其关闭。
driver.switchTo().alert().dismiss();
或
driver.switchTo().activeElement().dismiss();
编辑:我发现了一个有趣的网站。请尝试本网站末尾的代码:http://blog.amolchavan.space/block-push-notification-on-chrome-in-selenium-webdriver/
答案 1 :(得分:0)
我看到许多人还建议使用import React, { Component } from "react";
import { View, Text, FlatList,List } from "react-native";
// import {Row} from './Row';
export default class FlatListDemo extends Component {
constructor(props) {
super(props);
this.state = {
loading: false,
data: [],
page: 1,
seed: 1,
error: null,
refreshing: false,
};
}
componentDidMount() {
this.makeRemoteRequest();
}
makeRemoteRequest = () => {
const { page, seed } = this.state;
const url = `https://randomuser.me/api/?seed=${seed}&page=${page}&results=20`;
this.setState({ loading: true });
fetch(url)
.then(res => res.json())
.then(res => {
this.setState({
data: page === 1 ? res.results : [...this.state.data, ...res.results],
error: res.error || null,
loading: false,
refreshing: false
});
})
.catch(error => {
this.setState({ error, loading: false });
});
};
render() {
return (
<View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
<List>
<FlatList
data={this.state.data}
renderItem={({ item }) => (
<ListItem
roundAvatar
title={`${item.name.first} ${item.name.last}`}
subtitle={item.email}
avatar={{ uri: item.picture.thumbnail }}
/>
)}
keyExtractor={item => item.email}
/>
</List>
</View>
);
}
}
,因此它可能取决于chrome版本。当前的chrome版本可以按以下方式使用此代码
profile.default_content_settings