撰寫您的第一個 Selenium 腳本
建構 Selenium 腳本的逐步說明
一旦您安裝 Selenium,您就可以開始撰寫 Selenium 程式碼了。
八個基本組件
Selenium 所做的一切都是發送瀏覽器命令來執行某些操作,或發送資訊請求。您使用 Selenium 所做的大部分事情都是這些基本命令的組合
點擊「在 GitHub 上查看完整範例」連結,以查看程式碼的上下文。
1. 啟動會話
有關啟動會話的更多詳細資訊,請閱讀我們關於驅動程式會話的文件
WebDriver driver = new ChromeDriver();
driver = webdriver.Chrome()
IWebDriver driver = new ChromeDriver();
driver = Selenium::WebDriver.for :chrome
driver = await new Builder().forBrowser(Browser.CHROME).build();
driver = ChromeDriver()
2. 對瀏覽器執行動作
在此範例中,我們導航到一個網頁。
driver.get("https://selenium.dev.org.tw/selenium/web/web-form.html");
driver.get("https://selenium.dev.org.tw/selenium/web/web-form.html")
driver.Navigate().GoToUrl("https://selenium.dev.org.tw/selenium/web/web-form.html");
driver.get('https://selenium.dev.org.tw/selenium/web/web-form.html')
await driver.get('https://selenium.dev.org.tw/selenium/web/web-form.html');
driver.get("https://selenium.dev.org.tw/selenium/web/web-form.html")
3. 請求瀏覽器資訊
您可以請求許多類型的關於瀏覽器的資訊,包括視窗控制代碼、瀏覽器大小/位置、Cookie、警示等等。
driver.getTitle();
title = driver.title
var title = driver.Title;
driver.title
let title = await driver.getTitle();
val title = driver.title
4. 建立等待策略
將程式碼與瀏覽器的當前狀態同步是 Selenium 最大的挑戰之一,而做好這一點是一個進階主題。
基本上,您需要確保元素在頁面上,然後才能嘗試定位它,並且元素處於可互動狀態,然後才能嘗試與其互動。
隱式等待很少是最佳解決方案,但它是這裡最容易示範的,因此我們將其用作佔位符。
閱讀更多關於等待策略的資訊。
driver.manage().timeouts().implicitlyWait(Duration.ofMillis(500));
driver.implicitly_wait(0.5)
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(500);
driver.manage.timeouts.implicit_wait = 500
await driver.manage().setTimeouts({implicit: 500});
driver.manage().timeouts().implicitlyWait(Duration.ofMillis(500))
5. 尋找元素
大多數 Selenium 會話中的命令都與元素相關,並且您必須先找到元素才能與其互動
WebElement textBox = driver.findElement(By.name("my-text"));
WebElement submitButton = driver.findElement(By.cssSelector("button"));
text_box = driver.find_element(by=By.NAME, value="my-text")
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")
var textBox = driver.FindElement(By.Name("my-text"));
var submitButton = driver.FindElement(By.TagName("button"));
text_box = driver.find_element(name: 'my-text')
submit_button = driver.find_element(tag_name: 'button')
let textBox = await driver.findElement(By.name('my-text'));
let submitButton = await driver.findElement(By.css('button'));
var textBox = driver.findElement(By.name("my-text"))
val submitButton = driver.findElement(By.cssSelector("button"))
6. 對元素執行動作
只有少數可以對元素執行的動作,但您會經常使用它們。
textBox.sendKeys("Selenium");
submitButton.click();
text_box.send_keys("Selenium")
submit_button.click()
textBox.SendKeys("Selenium");
submitButton.Click();
text_box.send_keys('Selenium')
submit_button.click
await textBox.sendKeys('Selenium');
await submitButton.click();
textBox.sendKeys("Selenium")
submitButton.click()
7. 請求元素資訊
元素儲存了大量可以請求的資訊。
message.getText();
text = message.text
var value = message.Text;
message.text
let value = await message.getText();
val value = message.getText()
8. 結束會話
這會結束驅動程式程序,預設情況下也會關閉瀏覽器。不再可以向此驅動程式實例發送命令。請參閱結束會話。
driver.quit();
driver.quit()
driver.Quit();
driver.quit
await driver.quit();
driver.quit()
執行 Selenium 檔案
mvn exec:java -D"exec.mainClass"="dev.selenium.getting_started.FirstScript" -D"exec.classpathScope"=test
pytest path/to/test_script.py
ruby example_script.rb
node example_script.spec.js
下一步
大多數 Selenium 使用者會執行許多會話,並且需要組織它們以最大程度地減少重複並保持程式碼更易於維護。繼續閱讀以了解如何將此程式碼放入您的使用案例的上下文中,請參閱使用 Selenium。