簡體   English   中英

Selenium,Java,屏幕截圖和單擊按鈕出現問題

[英]Trouble with Selenium, Java, Screenshots and clicking buttons

這是關於硒和點擊的另一個問題。 我已經苦苦掙扎了大約兩天,無法正常工作-我已經在互聯網上嘗試了答案,現在我需要齊心協力。 提前致謝!!

我正在下面的網站上http://144.76.109.38/peTEST-如果您想追溯我的步驟,這可能會有所幫助。

我正在嘗試填寫登錄表單,然后單擊“登錄”並查看答案頁面。

這是我的代碼:

import java.io.File;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.Writer;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.Select;
public class toJava {
        public static void main(String[] args) {
                System.setProperty("webdriver.gecko.driver","/home/tallen/RTI/lib/geckodriver/geckodriver");
                WebDriver driver = new FirefoxDriver();
                driver.get("http:144.76.109.38/peTEST");
                File SF2 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                try{
                    FileUtils.copyFile(SF2, new File("./out-004.png"));
                }catch(IOException ioe){
                        System.out.println("There was an IO error");
                }
                driver.findElement(By.id("user_login_name")).click();
                WebElement WE4 = driver.findElement(By.id("user_login_name"));
                WE4.sendKeys("Superuser");
                driver.findElement(By.id("user_password")).click();
                WebElement WE6 = driver.findElement(By.id("user_password"));
                WE6.sendKeys("Jkerouac1!");
                WebElement WE7 = driver.findElement(By.xpath(".//*[@type='button'][@onclick='login()'][@value='Login']"));
                WE7.sendKeys(Keys.ENTER);
                File SF8 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                try{
                        FileUtils.copyFile(SF8, new File("./out-005.png"));
                }catch(IOException ioe){
                        System.out.println("There was an IO error");
                }
                driver.quit();
        }
}

因此,基本上,我將打開頁面,截取輸入用戶名和密碼的屏幕快照,單擊Login,然后截取另一個屏幕快照。

編譯和運行都是干凈的-這也不例外,也沒有問題。 我什至得到了兩個屏幕截圖。 第一個屏幕截圖顯示了登錄頁面-未輸入任何數據。 第二個屏幕截圖顯示了登錄頁面已填充,我要單擊的按鈕已標記,但未成功登錄時將顯示的“歡迎頁面”。該屏幕快照顯示了已標記的按鈕,我知道我已經找到了元素。 我已經在腳本中提供了登錄信息,以防您首先嘗試使用Selenium進行嘗試。

為什么未“單擊”登錄按鈕。 我嘗試單擊,執行等均無濟於事。 我什至嘗試進行隱式等待-仍然沒有。

我已經嘗試了高級用法交互-仍然沒有。

我對Selenium和Java相當陌生,希望它只是我忽略的愚蠢事物。 但是在瀏覽Web之后,那里的解決方案只是無濟於事。

我正在研究Debian-70-Wheezy-64-LAMP

我的Selenium庫來自client-combined-3.0.1-nodeps.jar

我的Geckodriver是v0.11.1-linux64

謝謝您的幫助!!!

你好
我不知道是否會導致問題,但是無論如何我都會使用登錄按鈕

WE7.click();
我只是認為,更容易理解您要使用的元素。

我已經與GeckoDriver一起工作了一段時間,並與該地區的一些經驗豐富的人交談,他們告訴我Gecko存在許多尚未解決的問題。
他們總是建議我不要使用GeckoDriver,因為它似乎經常失敗,並告訴我使用FirefoxDriver。
要嘗試這種方式,這是非常重要的,你只需要保持工作與舊版本的Firefox的版本46與FirefoxDriver兼容(該版本為我工作,你可以從以下地方下載這個 )並避免使用GeckoDriver。 正如我在這里找到的一樣,47版本也可以與FirefoxDriver一起使用。
切記:當您安裝這些早期版本的Firefox時,請不要忘記設置並禁用自動更新和后台更新,因為如果不這樣做,您很快就會以需要更新的最新版本結束GeckoDriver。

此外,您可以嘗試進行以下驗證:

 if(WE7.isDisplayed() && WE7.isEnabled()){ WE7.click(); } 

如果您在嘗試對Web元素執行操作時頁面未完全加載,則這種驗證會有所幫助。 如果該元素尚未准備好,您將無誤單擊它,但它將無法正常工作

希望這也對您有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM