用Java訪問Selenium表單的完整指南

2020-12-20 源碼時代

你有沒有注意到網上衝浪時無處不在的網絡表單?您訪問的幾乎每個網站或web應用程式都利用web表單獲取有關您自己的相關信息。從在web應用程式上創建一個帳戶到填寫一個簡短的調查,Web表單無處不在!表單包括複選框、單選按鈕、密碼、下拉以收集用戶數據等web元素。

如果你要表演自動瀏覽器測試對於您的網站或web應用程式,那麼您根本負擔不起從您的測試自動化腳本中刪除表單。說到測試自動化,Selenium有一個API來幫助查找這些Web元素並對它們採取後續的操作,比如選擇一個值或輸入一些文本。

本文將幫助您理解如何訪問Selenium中的表單來自動化Web應用程式的瀏覽器測試。我將使用JUnit框架和一些注釋來執行硒自動化測試在本文的後面。

首先,我們將了解WebElement是什麼,如何在Selenium自動化中訪問WebElement,然後查看基本的表單元素,比如輸入框、按鈕、可以在這些表單上執行的操作,最後編寫一個腳本來處理表單並在各種瀏覽器上運行它。如果您已經知道基本知識,那麼可以根據自己的情況跳過這些部分:

什麼是 WebElement?

在外行人的語言中,網頁上的任何內容都構成了WebElement。示例可以是文本框、單選按鈕等。Selenium Webriver提供了一個名為WebElement負責所有可能發生在網頁中的交互。要找到這些WebElement,SeleniumWebDriver提供了兩個方法,即findElement()和findElements()。

findElement():此方法用於定位單個Web元素。找到元素後,它作為WebElement對象返回。現在讓我們看看findElement()的語法,但是在我們開始在測試腳本中使用WebElement對象之前,我們需要注意一個非常重要的問題。

在開始創建WebElement的對象之前,我們需要導入下面的包:

import org.openqa.selenium.WebElement;

findElement()的語法:

WebElement ele = driver.findElement(By.xpath(---xpath---);

findElements():它返回與方法中定義的定位器對應的WebElement列表。findElements()的語法如下所示:

List<WebElement> ele = driver.findElements(By.xpath(---xpath---);

現在我們已經完全了解了WebElement接口,以及Selenium自動化測試中findElement()和findElements()方法之間的區別。

現在是深入研究這些Web元素的時候了。我們現在將列出所有可能涉及您的網站或網頁申請表格的網頁欄位。然後,我們將注意如何訪問SeleniumWebDriver中的表單。

以Selenium形式訪問的欄位類型

為了隨後構建在SeleniumWebDriver中訪問表單的腳本,我們需要了解測試自動化腳本中必須處理的各個欄位。讓我們試著一個接一個地挖掘這些WebElement。

輸入箱

輸入框是任何形式的主元素。沒有用戶的輸入,任何表單都是不完整的。它可分為兩類:

文本框-顯示用戶輸入的值的文本框。密碼欄位框-當用戶輸入值時顯示特殊字符(大部分為「*」)的文本框。以下是表示表單內輸入框的圖像。

Buttons

在訪問Selenium自動化測試表單時,需要考慮的最重要領域之一。如果沒有提交表單的接口,就沒有必要填寫表單。按鈕只用於提交我們在文本框中填寫的任何信息。這可以是提交某種形式的數據,或者簡單地向伺服器提交登錄信息。

CheckBox

在大多數被廣泛使用的網站中,我們看到一個小框,使我們能夠檢查或取消它。主要是在協議部分,用戶需要確認對這些策略的理解。複選框用於返回布爾值,如果選中它,則返回True,否則返回false。

Radio Button

記得當我們在任何一個註冊表格中選擇我們的性別時,在屏幕上看到一個圓形元素嗎?這就是單選按鈕。它類似於複選框,只不過不同之處在於,如果給我們多個單選按鈕,我們只能選擇一個,而在多個複選框的情況下,我們可以選擇多個單選按鈕。

Link

我們都面臨著忘記帳戶密碼的共同問題。注意到屏幕上的忘記密碼連結了嗎?這就是聯繫。它將我們重定向到一個新的網頁或一個新窗口彈出或類似的東西。它將我們連結到一個全新的URL。

Drop Down

對於一個特定類別有多個選項的網站,有時會出現這樣的情況。比如說一個網站來預訂你的機票。要獲取原產地和目的地城市,我們經常會看到一個具有多個值的列表。這個列表在最右邊的一端有一個箭頭來展開和顯示值,稱為下拉列表。它向用戶提供選項列表,從而根據需求提供對一個或多個值的訪問。

下面是Facebook如何使用表單的快照。

如何用Selenium在表單中Web元素?

現在我們已經知道了我們可以在應用程式中遇到哪些不同類型的Web元素,我們需要通過Selenium自動化測試腳本來識別這些Web元素,並為此使用Selenium定位器。定位器是提供給findElement()或findElements()方法的參數,這些方法通過使用web元素的屬性(如ID、name、Class等)來幫助檢索Web元素。通常,Selenium中有8個定位器,它們被廣泛使用:

ID名字標籤名類名LinkText部分LinkTextXPathCSS選擇器很少有這樣的例子:

WebElement eid = driver.findElement(By.id(「email」);

WebElement pswd = driver.findElement(By.name(「password」);

WebElement sbmtBtn = driver.findElement(By.xpath(「//input[@value=」submit」]」);

以類似的方式,我們可以使用By.className、By.CSSSelector()、By.link text()等。

通過訪問Selenium中的表單與Web元素交互

在通過Selenium自動化測試訪問表單時,找到這些Web元素只是半途而廢。現在,在Selenium中訪問表單的關鍵是。使用Selenium執行操作和與表單交互。讓我們看看如何對其中每一個執行不同的操作。

1.輸入箱

要處理任何輸入框,我們必須能夠輸入信息、清除信息或從框中獲取信息。Selenium提供的處理文本框的不同方法如下:

SendKeys()清空()getText()若要在文本框中輸入文本,可以使用發送鍵方法,該方法將從我們的自動化腳本中輸入用戶所需的文本。

driver.findElement(By.id(「username」).sendKeys(「abc@gmail.com」);

上述語句將輸入電子郵件ID為ABC@gmail.com輸入ID為用戶名的文本框中。現在,要清除預先輸入的文本或上次輸入的文本,可以使用清空()方法。

driver.findElement(By.id(「username」)).clear();

可用於文本框的第三個方法是getText()方法。它將獲取在文本框中寫入的文本,以防我們需要驗證現有文本或輸入的文本。

String nameText = driver.findElement(By.id(「username」)).getText();

上面的代碼行將返回文本,讓我們接受上面第一行代碼輸入的文本,即ABC@gmail.com並將其存儲在字符串類型的nameText變量中。當文本出現在Value屬性中時,可能會出現這種情況。在這種情況下,我們將使用getAttribute()方法代替getText()。

String nameText = driver.findElement(By.id(「username」)).getAttribute(「value」);

2.按鈕

我們可以使用按鈕提交信息。這可以通過單擊相同的操作來完成。下面是Selenium中用於對按鈕執行操作的方法。

點擊()提交()看起來這兩種方法並沒有什麼區別,但是一個非常細微的細節改變了每個方法的用法。這兩種方法最終都會將表單數據提交給伺服器,但我們需要了解存在的Web元素的類型。如果元素類型為「Submit」或「按鈕」,則單擊()方法將兩者都適用,但如果元素類型為「Submit」,且按鈕位於其中

標記,那麼只有Submit()才能工作。如果其中任何條件為false,則submit()將無法工作。

以下是這兩種語言的語法:

driver.findElement(By.id(「submtLogIn」).click();

driver.findElement(By.id(「submtLogIn」).submit()

3.複選框

在使用複選框時,我們將使用以下Selenium方法:

點擊()isSelected()要選擇或檢查一個值,我們使用click()方法。它只是將狀態從未檢查更改為CHECK,反之亦然。

driver.findElement(By.id(「name」)).click();

既然我們可以選中/取消選中複選框,那麼在執行Selenium自動化測試的特定操作之前,我們可能首先需要知道複選框的狀態。要獲得狀態,我們使用isSelected()方法,它將返回一個布爾值。這意味著如果選中複選框,我們將得到一個True,否則我們將得到假。

boolean state = driver.findElement(By.id(「name」)).isSelected();

4.收音機按鈕

在單選按鈕上執行的操作類似於複選框上的操作,我們也可以對單選按鈕使用與上面相同的方法。

點擊()isSelected()

5.聯繫

連結通常嵌入在網頁中,讓我們導航到一個新的屏幕,彈出或表單。我們可以對它們執行單擊操作,也可以獲取它所保存的文本,然後繼續執行。

點擊()getText()上述兩種方法都可以以類似上述的方式使用。

6.下拉

下拉列表在web應用程式中非常常見,並且廣泛用於在一系列選項中進行選擇。有各種各樣的方法,我們可以使用下拉。讓我們逐一看看它們及其相應的語法和用法。

selectByVisibleText(字符串)-它通過比較可見文本來選擇選項,其中在方法中傳遞的字符串值是要比較的。

selectByIndex(Int)-基於下拉菜單中的索引選擇選項,整數參數作為索引傳遞。

selectByValue(字符串)-基於字符串格式的選項值選擇選項

以類似的方式,我們可以使用以下任何選項從下拉列表中取消選擇任何選定的值:

deselectByVisibleText(字符串)

deselectByIndex(INT)

deselectByValue(字符串)

deSelectAll()-這將取消從下拉列表中選擇的所有選項。

要在Selenium代碼中使用上述任何方法,語法可以如下所示:

Select se=new Select(driver.findElement(By.id("nation")));

se.selectByValue("Ind");

在對我們的web應用程式執行Selenium自動化測試時,有時我們需要驗證下拉列表中的選項,或者我們是否可以選擇多個選項。使用Selenium非常容易地對這些操作進行排序,這使我們能夠執行更多的操作。以下是其中幾個:

getAllSelectedOptions()-我們可能會遇到下拉列表,在其中我們可以選擇多個選項。現在,要獲得所有選定選項的列表,我們可以使用此方法。

getFirstSelectedOption()-此方法將返回從下拉列表中選擇的第一個選項,與上面的方法不同,它將返回單個web元素,而不是列表。

getOptions()-此方法將使我們能夠在下拉列表中獲得所有可用選項的列表。

isMultiple()-要檢查下拉列表是否可以採用多個選項,我們可以使用isMultiple()方法返回一個布爾值。

要獲得選項列表,我們可以通過引用List對象來編寫代碼:

Select se=new Select(driver.findElement(By.id("nation"))); List<WebElement>

list=se.getOptions();

現在我們已經了解了Web元素的基本操作和處理,讓我們繼續在Selenium腳本中實現這些操作。在下一節中,我將向您展示一個處理演示站點上表單元素的簡單程序。

通過Selenium WebDriver處理表單元素

現在,我們將自動化Facebook註冊功能,以訪問Selenium中的表單,因為我們在Web元素上執行操作。下面是一個使用Java使用JUnit框架訪問Selenium表單的測試腳本。

//Complete code to run the test of facebook sign up

import org.junit.AfterClass;

import org.junit.BeforeClass;

import org.junit.Test;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.support.ui.Select;

public class TestForms {

static WebDriver driver;

@BeforeClass

public static void setUp(){

System.out.println("-----This is the beginning of our test !!!-----");

System.setProperty("webdriver.chrome.driver", "C:\\Users\\admin\\Downloads\\chromedriver_win32(1)\\chromedriver.exe");

driver = new ChromeDriver();

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

driver.get("https://facebook.com");

}

@Test

public void fillForm(){

System.out.println("-----Let us start the sign up process!!!-----");

/*

* Handling text boxes to enter and clear values

*/

WebElement fName = driver.findElement(By.xpath("//input[@name='firstname']"));

fName.sendKeys("--Enter you name here--");

WebElement lName = driver.findElement(By.xpath("//input[@name='lastname']"));

lName.sendKeys("--Enter your last name--");

//Clear the textbox

lName.clear();

lName.sendKeys("XYZ");

WebElement eMail = driver.findElement(By.xpath("//input[@name='reg_email__']"));

eMail.sendKeys("--Enter mail or contact number--");

WebElement pwd = driver.findElement(By.xpath("//input[@name='reg_passwd__']"));

pwd.sendKeys("--Enter a valid password here--");

/*

* Handling dropdown to select date of birth

*/

Select date = new Select(driver.findElement(By.xpath("(id('day'))")));

date.selectByVisibleText

通過運行上面的腳本,您將能夠使用JUnit訪問Selenium中的表單。如果你們不熟悉JUnit的話。以下是使用JUnit運行第一個Selenium自動化測試腳本的端到端指南。

關於更快測試周期的可伸縮性的思考?

幹得好!但是,如果您要訪問web應用程式的Selenium表單,那麼您的測試套件很可能會變得更大、更複雜。您需要在數百個瀏覽器+作業系統上訪問Selenium中的表單。不知道為什麼?

那麼,您的表單可能不像您想像的那樣兼容跨瀏覽器!下面是一個簡單的Datetime輸入欄位在呈現中的不同之處。

日期時間(IE8)

GoogleChrome 72中的日期時間

這讓我們回到了一個重要的問題!如何在SeleniumWebDriver中訪問超過100個瀏覽器+OS的表單?

好吧,首先你可以繼續建立Selenium Grid。然而,如果您有一個更大的測試套件,豐富的測試需求,那麼您可能需要花費大量的金錢和時間來擴展您的內部Selenium Grid。您將需要繼續添加正在啟動的最新設備、瀏覽器和作業系統到Selenium Grid中。考慮到採用敏捷、看板和其他現代SDLCS(軟體開發生命周期),主要的瀏覽器供應商,作業系統每個月推出一個新版本。

軟體開發生命周期(軟體開發生命周期),主要的瀏覽器供應商,作業系統正在推出一個新的版本每月。

雲上Selenium Grid中的訪問表單

讓我向您演示一種在Selenium中訪問表單的可伸縮方法。我將使用LambdaTest的Online Selenium Grid在不同的瀏覽器和作業系統中並行運行上述腳本。在我們開始在LambdaTest上運行腳本之前,我們需要處理以下幾點:

而不是調用常規的FirefoxDriver,我們必須使用遠程WebDriver以及與瀏覽器、其版本、作業系統等相關的功能。由於我們已經在本地創建了腳本,因此我們將使用Selenium所需的功能生成器,通過提供一些細節,如OS、解析度、瀏覽器(&它的版本)、Selenium版本、位置等等,這個生成器將提供幾行代碼,這些代碼將根據我們的選擇如下所示。

現在,我們只需要在Selenium自動化測試腳本中聲明LambdaTest身份驗證憑據。這樣,WebDriver將知道它需要處理的正確的集線器URL。下面是我們將用於在LambdaTest上運行測試的最後一個腳本。對現有腳本的更改將突出顯示。import java.net.MalformedURLException;

import java.net.URL;

import org.junit.AfterClass;

import org.junit.BeforeClass;

import org.junit.Test;

import org.openqa.selenium.By;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.openqa.selenium.remote.RemoteWebDriver;

import org.openqa.selenium.support.ui.Select;

public class TestForms {

static String username = "Your UserName";

static String accesskey = "Your Access Key";

static RemoteWebDriver driver = null;

static String gridURL = "@hub.lambdatest.com/wd/hub";

boolean status = false;

@BeforeClass

public static void setUp(){

System.out.println("-----This is the beginning of our test !!!-----");

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability("build", "TestFormsV1.0");

capabilities.setCapability("name", "SeleniumForms");

capabilities.setCapability("platform", "Windows 10");

capabilities.setCapability("browserName", "Chrome");

capabilities.setCapability("version","79.0");

capabilities.setCapability("selenium_version","3.13.0");

capabilities.setCapability("geoLocation","IN");

capabilities.setCapability("chrome.driver","78.0");

try {

driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);

}

catch (MalformedURLException e) {

System.out.println("Invalid grid URL");

} catch (Exception e) {

System.out.println(e.getMessage());

}

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

}

@Test

public void fillForm(){

driver.get("https://facebook.com");

System.out.println("-----Let us start the sign up process!!!-----");

/*

* Handling text boxes to enter and clear values

*/

WebElement fName = driver.findElement(By.xpath("//input[@name='firstname']"));

fName.sendKeys("--Enter you name here--");

WebElement lName = driver.findElement(By.xpath("//input[@name='lastname']"));

lName.sendKeys("--Enter your last name--");

//Clear the textbox

lName.clear();

lName.sendKeys("XYZ");

WebElement eMail = driver.findElement(By.xpath("//input[@name='reg_email__']"));

eMail.sendKeys("--Enter mail or contact number--");

WebElement pwd = driver.findElement(By.xpath("//input[@name='reg_passwd__']"));

pwd.sendKeys("--Enter a valid password here--");

/*

* Handling dropdown to select date of birth

*/

Select date = new Select(driver.findElement(By.xpath("(id('day'))")));

date.selectByVisibleText("15");

Select month = new Select(driver.findElement(By.xpath("(id('month'))")));

month.selectByVisibleText("Jan");

Select year = new Select(driver.findElement(By.xpath("(id('year'))")));

year.selectByVisibleText("1990");

/*

* Handling Radio buttons to select gender

*/

driver.findElement(By.className("_58mt")).click();

/*

* Handling the Sign Up button to perform click action

*/

WebElement sgnUp = driver.findElement(By.xpath("//button[@id='u_0_13']"));

sgnUp.click();

}

@AfterClass

public static void tearDown(){

System.out.println("-----We're now closing the session...-----");

driver.quit();

}

}

您可以通過Eclipse或命令行直接運行上述代碼,步驟與我們前面已經完成的步驟相同。在執行腳本時,結果將在Lambda測試儀錶板中獲得。我們一次用並行瀏覽器執行腳本後,我將向您展示相應的結果頁面。接下來是最有趣的部分,我們可以在並行瀏覽器中運行測試,而無需每次打算運行測試時更改瀏覽器細節。

但是在這樣做之前,我們必須創建一個幫助類來領導測試。隨後,我們必須對包含測試腳本的主類進行一些更改,這樣就可以了。在下面的部分中,您將看到使用LambdaTest在不同瀏覽器上並行運行測試的最終測試腳本。

測試腳本容器類

下面的代碼將包含我們打算執行的主要測試腳本。這與上面所寫的類似,在變量中做了一些小的調整。此示例顯示在3種不同瀏覽器上的執行情況。您可以根據您的執行需求修改您的腳本。

import java.net.MalformedURLException;

import java.net.URL;

import java.util.LinkedList;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.junit.runners.Parameterized;

import org.openqa.selenium.By;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.openqa.selenium.remote.RemoteWebDriver;

import org.openqa.selenium.support.ui.Select;

@RunWith(ParallelHelper.class)

public class TestForms {

static String username = "Your User Name";

static String accesskey = "Your Access Key";

static RemoteWebDriver driver = null;

static String gridURL = "@hub.lambdatest.com/wd/hub";

public static String platform;

public static String browserName;

public static String browserVersion;

boolean status = false;

/*

* Creating parameters for the browsers to be used

*/

@Parameterized.Parameters

public static LinkedList<String[]> getEnvironments() throws Exception {

LinkedList<String[]> env = new LinkedList<String[]>();

env.add(new String[]{"WIN10", "chrome", "79.0"});

env.add(new String[]{"WIN10","firefox","71.0"});

env.add(new String[]{"WIN10","internet explorer","11.0"});

return env;

}

public TestForms(String platform, String browserName, String browserVersion) {

this.platform = platform;

this.browserName = browserName;

this.browserVersion = browserVersion;

}

@Before

public void setUp() {

System.out.println("-----This is the beginning of our test !!!-----");

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability("build", "TestFormsV1.0"); //Can provide you Build Name

capabilities.setCapability("name", "SeleniumForms"); //Provide your Test Name

capabilities.setC

測試腳本助手/運行程序類

該類包含能夠在不同瀏覽器上並行執行測試的代碼。

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.TimeUnit;

import org.junit.runners.Parameterized;

import org.junit.runners.model.RunnerScheduler;

public class ParallelHelper extends Parameterized {

private static class ThreadPoolScheduler implements RunnerScheduler {

private ExecutorService exec;

public ThreadPoolScheduler() {

String threads = System.getProperty("junit.parallel.threads", "10");

int numThreads = Integer.parseInt(threads);

exec= Executors.newFixedThreadPool(numThreads);

}

public void finished() {

exec.shutdown();

try {

exec.awaitTermination(10, TimeUnit.MINUTES);

} catch (InterruptedException exc) {

throw new RuntimeException(exc);

}

}

public void schedule(Runnable childStatement) {

exec.submit(childStatement);

}

}

public ParallelHelper(Class<?> klass) throws Throwable {

super(klass);

// TODO Auto-generated constructor stub

}

}

在運行上述類時,我們將看到我們的測試在LambdaTestCloud上運行,並生成測試結果。請注意,您可以在EclipseIDE上看到進展&隨後,結果(如執行視頻)可以在LambdaTestAutomationDashboard上獲得。下面是在LambdaTestDashboard中執行結果的快照:

另一方面,EclipseIDE控制臺和結果將顯示如下:

您能夠訪問Selenium WebDriver中的表單嗎?

我希望這個SeleniumJava教程幫助您訪問SeleniumWebDriver中的表單。記住,表單對於每一家在線經營的企業來說都是基本的。幾乎每個Web應用程式都通過表單收集用戶信息。作為一個自動化測試人員,您需要確保兩件事:

您的所有表單都按其應有的功能工作。您的所有表單都是跨瀏覽器兼容的,因此每個客戶都可以訪問它們。

相關焦點

  • Selenium python+selenium 方法大全
    它可以用來確定 xml 文檔中的元素位置,通過元素的路徑來完成對元素的查找5)find_element_by_css_selector() CSS 屬性定位可以比較靈活地選擇控制項的任意屬性,定位方式也會比 xpath 快6)find_element_by_tag_name() 根據標籤名進行定位7)find_element_by_link_text() 根據完整的超連結文字進行定位
  • Python使用selenium定位及訪問屬性的方法
    在使用Python製作爬蟲時經常會用到selenium,現就selenium經常要用到一些函數及屬性作說明:from selenium import webdriverdriver=webdriver.Firefox()url="http://xxxx.com"driver.get(url)driver.close
  • 3分鐘速成,快速使用selenium定位select表單
    定位select表單有二種方式:1、 先定位select,再去定位options的值。2、 利用Select類去定位。00後</option></select>第一種定位方式python腳本如下:#先定位select表單值,再獲取option標籤數組值,再用下標去定位值
  • Selenium中常用的xpath
    實戰寶典》出版了selenium大部分的方法參數都是java.lang.String locator,假如我們想傳入xptah表達式,可以在表達式的開頭加上"xpath=",也可以不加.如下面的兩個效果是一樣的.
  • 終極表單設計指南
    在這篇指南裡,我收集了33個你能立即應用的最好的做法。它提供了一個非常好的出發點去試驗,能幫你找到對你有用的方法。我們會講到:副本很重要!優化移動端表單設計使用正確的輸入方式通過工作而不是用戶來變得聰明優秀表單的合理布局表單設計的巧妙之處副本很重要你知道副本有多重要,我們曾在博客裡寫過,調整表單設計能大大的提高你的轉化率。
  • UED案例分析:高效易用表單設計指南
    表單是什麼表單是一個包含表單元素的區域,使用表單標籤()定義。表單元素是允許用戶在表單中輸入信息的元素,主要負責數據採集功能。表單頁通常用來執行登錄、註冊、預定、下單、評論等任務,是產品中數據錄入必不可少的頁面模式。因此,舒適的表單設計,可以引導用戶高效地完成表單背後的工作流程。
  • 自動化測試基礎篇:Selenium unittest 簡介
    就是一個完整的測試流程,包括測試前準備環境的搭建(setUp),執行測試代碼 (run),以及測試後環境的還原(tearDown)。元測試(unit test)的本質也就在這裡,一個測試用例是一個完整的測試單元,通過運行這個測試單元,可以對某一個問題進行驗證。
  • Selenium v2.45.0 發布,支持 Firefox 36
    Selenium v2.45.0 發布,此版本現已提供下載:http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone
  • Python+Selenium詳解(超全)
    這也是最重要的一點,不管你以前更熟悉 C、 java、ruby、python、或都是 C# ,你都可以通過 selenium 完成自動化測試,而 QTP 只支持 VBS支持多平臺:windows、linux、MAC ,支持多瀏覽器:ie、ff、safari、opera、chrome
  • 你的終極表單設計指南
    但是我也有好的消息:做到好的表單設計不是那麼難。在這篇指南裡,我收集了33個你能立即應用的最好的做法。它提供了一個非常好的出發點去試驗, 找到對你有用的方法。我們會講到:副本很重要!讓用戶知道完成表單的好處「我閒的時候,喜歡填不同的線上表單。我就是喜歡填!」從來沒人這樣說。用戶需要明確的知道把他們的時間投入到這樣一個不合理的活動裡有什麼好處。在結帳過程中,好處非常明顯,但是註冊呢?在表單的頂部突出顯示他們一旦註冊完能做什麼。他們可以訪問獨家內容,社區或者免費試用。不要羞於讓他們興奮。
  • Selenium 自動登錄淘寶,我無意間發現了登錄漏洞!
    1)相關依賴from selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.common.exceptions import
  • Python無頭爬蟲Selenium系列(01):像手工一樣操作瀏覽器
    當然是用代碼讓程序自動化採集數據,但是現在"爬蟲"不是那麼容易,其中最困難的即是突破網站各種反爬機制。本系列將全面講解 Python 中一個非常成熟的庫 —— selenium,並教會你如何使用它爬取網絡上所需的數據自動化爬蟲雖然方便,但希望大家能顧及網站伺服器的承受能力,不要高頻率訪問網站。並且千萬不要採集敏感數據!!
  • 功能更新|你們要的表單訪問倒計時、付款減庫存……都上線了!
    你們心心念念的表單訪問倒計時、付款減庫存量、按天/周/月提交、表單短連結都來啦!更多驚喜,一起往下看吧!為了更好的引導用戶填報,提升用戶體驗,本次更新,我們上線了「表單訪問倒計時」功能,通過設置「表單只允許在規定的時間範圍內訪問>>使用表單訪問倒計時頁面」即可開啟。
  • 表單設計 | 十個錯誤提示設計指南
    表單設計中的錯誤提示的作用在於幫助用戶修復表單中的錯誤,並給出他們如何避免更多錯誤的建議。以下筆者將與大家討論設計錯誤提示的有用指南,enjoy~於是筆者在下班時間找了一片關於錯誤提示的外文文章,利用空閒時間把它翻譯過來,希望能夠幫助大家在之後的表單設計中有一定的幫助。錯誤提示是幫助用戶明確識別錯誤的地方和內容,並允許用戶輕鬆地訪問和糾正錯誤內容。表格是許多app和網站的必要組成部分,我們使用它們登錄、購物、發送反饋、並輸入我們的個人信息。想想你使用網站時,你輸入了多少次信息?你遇到了多少次的錯誤?
  • Django Form表單完整使用流程
    ,我們可以嘗試使用表單系統來實現這個功能了,在本節我們將匯總相關知識點,以此來講解如何使用 Form 表單系統完成實際功能的開發。">由於表單實例可以直接返回 HTML表單元素,所以,可以用它來替換模板文件中的欄位定義,而且在沒有正確填充表單時,它還可以返回錯誤信息的提示。
  • 表單查詢的全套使用指南!
    拜託,用表單大師,查成績、查訂單、查預約…隨便查!免費!此次我們優化了查詢條件設置,支持多條件查詢,還可自定義條件之間的「並且」、「或者」關係。聽起來是不是有點複雜?別怕,看完這篇使用指南,這套升級版查詢系統你就可以直接免費抱走了!如何開啟?
  • Selenium Webdriver上傳文件,別傻傻的分不清得3種方法
    使用sendKeys方法的代碼實現:package SeleniumPrograms;import java.io.IOException;import org.openqa.selenium.By;import org.openqa.selenium.JavascriptExecutor;import
  • python,語法簡單,容易上手,基本上教程看一遍就能用
    人工智慧的話,感覺其實各個公司做的都差不多,畢竟語言沒區別,而且只要你掌握數據結構算法,ai寫起來也很快的不用急,不管你是寫python還是java,基本語法理解透了,都可以接觸到java和python。寫ai不是簡單的一句我不認識你就可以。ai中很多操作都是必須基於數據進行操作,你需要先將數據寫入ai中,在進行實現。這樣對寫python而言才是最快的方法。
  • python爬蟲之selenium抓取淘寶商品信息
    採用的技術有selenium、pyquery及urllib.parse等。selenium可以模擬用戶執行的操作,是一個自動化測試工具,我們可以根據自己的需要預先設置selenium按照我們設置好的步驟進行操作,而在爬蟲中我們使用selenium可以解決javascript動態執行代碼的問題,不用費心去解析js如何運行,運行後產生的信息,直接使用selenium模擬實際登陸網頁的操作,獲取我們需要的信息進行分析,成功幫我們避開一系列複雜的通信過程,方便使用者。
  • 通過「訪問修飾符」java想告訴我們什麼?
    在平時編寫代碼的時候我們一定會用到public、private這些「java訪問修飾符「,可是你知道java為什麼要設計這些「訪問修飾符」嗎?今天我們就一起來看看廢話少說,先看定義!01定義java有四個訪問修飾符public:被public修飾的成員可以被所有類訪問到protected:所修飾的成員會被位於同一包中所有類可以訪問到。