撰寫您的第一個 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.programming.tw/selenium/web/web-form.html");driver.get("https://selenium.programming.tw/selenium/web/web-form.html") driver.Navigate().GoToUrl("https://selenium.programming.tw/selenium/web/web-form.html");driver.get('https://selenium.programming.tw/selenium/web/web-form.html') await driver.get('https://selenium.programming.tw/selenium/web/web-form.html'); driver.get("https://selenium.programming.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.title4. 建立等待策略
將程式碼與瀏覽器的當前狀態同步是 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"=testpytest path/to/test_script.pyruby example_script.rbnode example_script.spec.js下一步
大多數 Selenium 使用者會執行許多會話,並且需要組織它們以最大程度地減少重複並保持程式碼更易於維護。繼續閱讀以了解如何將此程式碼放入您的使用案例的上下文中,請參閱使用 Selenium。




