初めてのSeleniumスクリプトを作成する
Seleniumをインストールしたら、Seleniumコードを記述する準備ができました。
8つの基本コンポーネント
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. ブラウザでアクションを実行する
この例では、Webページに移動しています。
driver.get("https://selenium.dokyumento.jp/selenium/web/web-form.html");
driver.get("https://selenium.dokyumento.jp/selenium/web/web-form.html")
driver.Navigate().GoToUrl("https://selenium.dokyumento.jp/selenium/web/web-form.html");
driver.get('https://selenium.dokyumento.jp/selenium/web/web-form.html')
await driver.get('https://selenium.dokyumento.jp/selenium/web/web-form.html');
driver.get("https://selenium.dokyumento.jp/selenium/web/web-form.html")
3. ブラウザ情報をリクエストする
リクエストできるブラウザに関する情報の種類はたくさんあります。ウィンドウハンドル、ブラウザのサイズ/位置、クッキー、アラートなどが含まれます。
driver.getTitle();
title = driver.title
var title = driver.Title;
driver.title
let title = await driver.getTitle();
val title = driver.title
4. 待機戦略を確立する
コードをブラウザの現在の状態と同期させることは、Seleniumの最大の課題の1つであり、うまく行うことは高度なトピックです。
基本的に、要素を特定しようとする前に要素がページ上にあることを確認し、要素を操作しようとする前に要素がインタラクティブな状態にあることを確認する必要があります。
暗黙的な待機は最良の解決策であることはまれですが、ここで説明するのが最も簡単なので、プレースホルダーとして使用します。
待機戦略の詳細をご覧ください。
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の使用」でこのコードをユースケースのコンテキストにどのように配置するかについてお読みください。