如何在Java中接受使用PhantomJSDriver的警报?我正在尝试与YouTube合作。我无法让它发挥作用。
我尝试使用此代码接受任何驱动程序,但它不适用于PhantomJS。
static void confirmDialog(WebDriver driver) {
if (driver instanceof PhantomJSDriver) {
PhantomJSDriver phantom = (PhantomJSDriver) driver;
phantom.executeScript("window.confirm = function(){return true;}");
phantom.executeScript("return window.confirm");
} else driver.switchTo().alert().accept();
}
答案 0 :(得分:7)
您必须执行JS以将window.alert调用设置为不执行任何操作。您可以使用此方法。
static void confirmDialog(WebDriver driver) {
if (driver instanceof PhantomJSDriver) {
PhantomJSDriver phantom = (PhantomJSDriver) driver;
phantom.executeScript("window.alert = function(){}");
phantom.executeScript("window.confirm = function(){return true;}");
} else driver.switchTo().alert().accept();
}
答案 1 :(得分:2)
JavascriptExecutor为我工作。在点击调用警报的事件之前,请务必执行它。
#include <iostream>
class X
{
protected:
int abc=10;
public:
X() {};
~X() {};
int getAbc() { return abc; }
};
class Y : public X
{
public:
int abc;
X& x;
Y(X& x) : x(x) {
};
~Y() {};
void setAbcofY() { this->abc = X::getAbc(); }
};
int main()
{
X* a = new X();
Y* b = new Y(*a);
b->setAbcofY();
//system("pause");
std::cout << b->abc << std::endl;
return 0;
}
注意: - 点击调用警报确认框的事件后不要使用它。
默认情况下,上面的代码将确认框设置为((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }");
表示您接受/点击该页面上所有确认框中的确定(如果被调用)
希望它会对你有所帮助:)。