当前位置: 首页 > 知识库问答 >
问题:

java、selenium web驱动程序

施驰
2023-03-14

我是SeleniumWebDriver的新手。我写这段代码是为了理解导航命令,但是一旦浏览器打开,就会显示一个登录弹出窗口。我试图使用类名或xpath关闭它,但出现超时异常。

在这种情况下,我需要使用显式等待吗?你能帮我找出问题所在吗?

public class TestNavigateCommands {
WebDriver driver;
public void invokeBrowser(){
    try {
        System.setProperty("webdriver.chrome.driver", "/Users/himaja/Documents/chromedriver");
        ChromeOptions options=new ChromeOptions();
        options.addArguments("start-fullscreen");
        driver=new ChromeDriver(options);
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
        navigateCommands();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
public void navigateCommands(){
    try {
        driver.navigate().to("https://www.flipkart.com/");
        Thread.sleep(4000);
        driver.findElement(By.className("2AkmmA _29YdH8")).click();
        //driver.findElement(By.xpath("//*[@class='_2AkmmA _29YdH8']")).click();
        driver.findElement(By.xpath("//span[starts-with(text(),'Applicances')]")).click();
        driver.findElement(By.xpath("//span[contains(text(),'Microwave Ovens')]")).click();
        Thread.sleep(2000);
        driver.navigate().back();
        Thread.sleep(2000);
        driver.navigate().forward();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }



}


public static void main(String[] args) {
    TestNavigateCommands test1= new TestNavigateCommands();
    test1.invokeBrowser();

}

}

例外情况:

[43.366][SEVERE]:超时接收来自渲染器的消息: 37.150[43.373][SEVERE]:超时接收来自渲染器的消息:-0.007org.openqa.selenium.TimeoutExcoop:超时

共有2个答案

萧嘉禧
2023-03-14
public class TestNavigateCommands {
WebDriver driver;

public void invokeBrowser() {
    try {
        System.setProperty("webdriver.chrome.driver", "/Users/himaja/Documents/chromedriver");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("start-fullscreen");
        driver = new ChromeDriver(options);
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
        navigateCommands();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public void navigateCommands() {
    try {
        driver.navigate().to("https://www.flipkart.com/");          
        driver.findElement(By.xpath("//div[@class='_3Njdz7']//button[@class='_2AkmmA _29YdH8']")).click();
        WebDriverWait wait = new WebDriverWait(driver, 30);
        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//a[@title='Appliances']//span"))));
        driver.findElement(By.xpath("//a[@title='Appliances']//span")).click();         
        Thread.sleep(2000);
        driver.navigate().back();
        driver.navigate().forward();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
田骁
2023-03-14

请尝试以下代码,可能会有所帮助:

public class TestNavigateCommands {
     public static void main(String[] args) throws InterruptedException {
            try {                
                  System.setProperty("webdriver.chrome.driver", "/Users/himaja/Documents/chromedriver");
                  WebDriver driver = new ChromeDriver();
                  driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                  WebDriverWait wait=new WebDriverWait(driver,50 );

                  driver.manage().window().maximize();

                  driver.navigate().to("https://www.flipkart.com/");          
                  driver.findElement(By.xpath("//button[contains(@class,'YdH8')]")).click();   


                  wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//a[@title='Appliances']//span"))));
                  driver.findElement(By.xpath("//a[@title='Appliances']//span")).click();         

            } catch (Exception e) {
                e.printStackTrace();
            }           
        }   
    }
 类似资料:
  • 问题内容: 我试图单击此页面上的元素: 在这一点上,我想单击“现金流量”,“资产负债表”或“季度”。我知道这些按钮已加载,因为我可以使用BeautifulSoup从页面源中提取它们。但是,当我尝试使用Selenium时: 全部返回“无法定位元素”,除了“季度”返回一个元素,但它位于图上方的一个元素而不是我感兴趣的表格上方的一个元素。 我认为这是由于位于错误的iframe中,而我找到了所有ifram

  • 问题内容: 我们当前的连接配置如下所示: 并且已在当前版本(源代码)中弃用,并将被删除:“此方法无法替代。使用connectTimeout属性控制连接超时。” 我认为重试和连接超时是两回事。有谁知道为什么改变了它以及它有什么(内部)含义? 问题答案: 关于autoConnectRetry的含义有很多困惑。大多数人认为这意味着,如果操作由于IOException而失败,驱动程序将重试该操作,直到ma

  • 服务器上的mongodb版本将比驱动程序版本旧。我的java驱动程序版本是3.6,Mongo-版本显示我是2.4 我该怎么解决这个问题?

  • 查询从something_data中选择username作为col6、性别作为col1、last_name作为col2、email作为col3、first_name作为col4、something_uuid作为col5、group_email作为col7、deleted作为col8、puars作为col9,其中username=?;在/xx.yy.91.205:9042上未准备,请在重试执行之前准

  • 驱动程序版本为: 我的问题是,当我使用api find和一些来自java的过滤器时,操作需要15秒。 我检查了mongo服务器日志文件,发现跟踪是一个命令,而不是一个查询: 2015-09-01T12:11:47.496+0200I命令[conn503]命令b.$CMD命令:计数{count:“logs”,查询:{timestamp:{$GTE:新日期(1433109600000)},aplica

  • 我已经准备了一些在Mongo上执行的脚本。它在命令行中按预期工作: 但是当我试图在java(scala)代码中移动它时,它不能与 有人成功使用db.eval()方法吗?