
Selenium เป็นโปรเจ็กต์หลักที่รวบรวมเครื่องมือและไลบรารีที่หลากหลายที่ช่วยให้เว็บเบราว์เซอร์ทำงานอัตโนมัติ Selenium จัดเตรียมโครงสร้างพื้นฐานสำหรับข้อกำหนด W3C WebDriver โดยเฉพาะ ซึ่งเป็นแพลตฟอร์มและอินเทอร์เฟซการเข้ารหัสที่เป็นกลางทางภาษาที่เข้ากันได้กับเว็บเบราว์เซอร์หลักๆ ทั้งหมด
โครงการนี้เกิดขึ้นได้โดยอาสาสมัครที่บริจาคเงินหลายพันชั่วโมงในการพัฒนาและบำรุงรักษาโค้ด
ซอร์สโค้ดของ Selenium มีให้ใช้งานภายใต้ลิขสิทธิ์ Apache 2.0
README นี้มีไว้สำหรับนักพัฒนาที่สนใจมีส่วนร่วมในโครงการ สำหรับผู้ที่ต้องการเริ่มต้นใช้งาน Selenium โปรดดูคู่มือผู้ใช้ของเราเพื่อดูตัวอย่างและคำอธิบายโดยละเอียด และหากคุณประสบปัญหา คุณสามารถรับความช่วยเหลือได้หลายวิธี
โปรดอ่าน CONTRIBUTING.md ก่อนที่จะส่งคำขอดึงของคุณ
ข้อกำหนดเหล่านี้เป็นข้อกำหนดในการสร้างสภาพแวดล้อมการพัฒนาในพื้นที่ของคุณเองเพื่อสนับสนุน Selenium
Bazelisk ซึ่งเป็น wrapper Bazel ที่ดาวน์โหลดเวอร์ชันของ Bazel ที่ระบุในไฟล์ .bazelversion โดยอัตโนมัติ และส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมดไปยังไบนารี Bazel จริงอย่างโปร่งใส
Java JDK เวอร์ชัน 17 หรือสูงกว่า (เช่น Java 17 Temurin)
ตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME เป็นตำแหน่งของไฟล์ปฏิบัติการ Java (JDK ไม่ใช่ JRE)
เพื่อทดสอบสิ่งนี้ ให้ลองรันคำสั่ง javac คำสั่งนี้จะไม่มีอยู่หากคุณติดตั้ง JRE เท่านั้น หากคุณพบรายการตัวเลือกบรรทัดคำสั่ง แสดงว่าคุณอ้างอิง JDK อย่างถูกต้อง
Xcode รวมถึงเครื่องมือบรรทัดคำสั่ง ติดตั้งเวอร์ชันล่าสุดโดยใช้: xcode-select --install
Rosetta สำหรับ Apple Silicon Macs เพิ่ม build --host_platform=//:rosetta ไปยังไฟล์ . .bazelrc.local เรากำลังดำเนินการเพื่อให้แน่ใจว่าสิ่งนี้จะไม่จำเป็นในระยะยาว
เมื่อหลายปีก่อน Jim Evans เผยแพร่บทความดีๆ เกี่ยวกับการตั้งค่าสภาพแวดล้อมการพัฒนา Windows สำหรับการเชื่อมโยงภาษา Selenium .NET; บทความนี้ล้าสมัย แต่มีคำอธิบายโดยละเอียดและภาพหน้าจอที่บางคนอาจพบว่ามีประโยชน์
สคริปต์นี้จะช่วยให้มั่นใจว่าสภาพแวดล้อมของนักพัฒนาพร้อมที่จะดำเนินการอย่างสมบูรณ์ (ไม่มีการติดตั้งหรือตั้งค่าที่มีอยู่แล้วเว้นแต่จะได้รับแจ้งเป็นอย่างอื่น)
เปิด Powershell ในฐานะผู้ดูแลระบบ
ดำเนินการ: Set-ExecutionPolicy Bypass -Scope Process -Force ให้เรียกใช้สคริปต์ในกระบวนการ
นำทางไปยังไดเร็กทอรีที่คุณต้องการโคลนซีลีเนียมหรือไดเร็กทอรีหลักของ repo Selenium ที่ถูกโคลนไว้แล้ว
ดาวน์โหลดและรันสคริปต์นี้ในเทอร์มินัล PowerShell: [scripts/dev-environment-setup.ps1]`
อนุญาตให้รันสคริปต์ใน Selenium โดยทั่วไป:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
เปิดใช้งานโหมดนักพัฒนาซอฟต์แวร์:
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionAppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1"
ติดตั้ง MSYS2 ซึ่งเป็นสภาพแวดล้อมเชลล์ทางเลือกที่มีคำสั่งคล้าย Unix
เพิ่มไดเร็กทอรี bin ให้กับตัวแปรสภาพแวดล้อม PATH (เช่น "C:toolsmsys64usrbin" )
เพิ่มตำแหน่ง bash.exe เป็นตัวแปรสภาพแวดล้อม BAZEL_SH (เช่น "C:toolsmsys64usrbinbash.exe" )
ติดตั้ง Visual Studio Community เวอร์ชันล่าสุด
ใช้ตัวติดตั้ง Visual Studio เพื่อแก้ไขและเพิ่มภาระงาน "การพัฒนาเดสก์ท็อปด้วย C++"
เพิ่มตำแหน่งไดเร็กทอรีการติดตั้งเครื่องมือสร้าง Visual C++ ให้กับตัวแปรสภาพแวดล้อม BAZEL_VC (เช่น "C:Program FilesMicrosoft Visual Studio2022CommunityVC" )
เพิ่มเวอร์ชันเครื่องมือ Visual C++ Build ให้กับตัวแปรสภาพแวดล้อม BAZEL_VC_FULL_VERSION (ซึ่งสามารถค้นพบได้จากชื่อไดเรกทอรีใน "$BAZEL_VCToolsMSVC<BAZEL_VC_FULL_VERSION>" )
เพิ่มการรองรับชื่อไฟล์แบบยาว (bazel มีไดเร็กทอรีที่ซ้อนกันจำนวนมากซึ่งสามารถเกินขีดจำกัดเริ่มต้นใน Windows)
reg เพิ่ม "HKEY_LOCAL_MACHINESOFTWAREMicrosoftCommand Processor" /t REG_DWORD /f /v "DisableUNCCheck" /d "1"reg เพิ่ม "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem" /t REG_DWORD /f /v "LongPathsEnabled" /d "1"
สร้างไฟล์ selenium/.bazelrc.windows.local
เพิ่ม "startup --output_user_root=C:/tmp" ลงในไฟล์
อนุญาตให้ Bazel สร้างเวอร์ชันชื่อสั้นของพาธไฟล์ขนาดยาว: fsutil 8dot3name set 0
ตั้งค่าเอาต์พุต bazel เป็น C:/tmp แทนที่จะซ้อนอยู่ภายในไดเร็กทอรีโปรเจ็กต์:
เปิดใช้งานการสนับสนุน Long Paths ด้วยคำสั่งรีจิสทรี 2 คำสั่งเหล่านี้:
หากคุณต้องการมีส่วนร่วมในโปรเจ็กต์ แต่ไม่ต้องการตั้งค่าสภาพแวดล้อมการพัฒนาในเครื่องของคุณเอง มีสองทางเลือกให้เลือก
แทนที่จะสร้างสภาพแวดล้อมการพัฒนาในพื้นที่ของคุณเอง GitPod จัดเตรียมสภาพแวดล้อมที่พร้อมใช้งานให้กับคุณ
อีกทางเลือกหนึ่ง คุณสามารถสร้าง Dev Container ซึ่งโดยทั่วไปคือคอนเทนเนอร์นักเทียบท่า ซึ่งเหมาะสำหรับการสร้างและทดสอบ Selenium โดยใช้ devcontainer.json ในไดเร็กทอรี .devcontainer การรองรับ IDE เช่น VS Code หรือ IntelliJ IDEA ควรชี้ให้คุณเห็นว่าจะสร้างคอนเทนเนอร์ดังกล่าวได้อย่างไร
คุณยังสามารถสร้างอิมเมจ Docker ที่เหมาะสมสำหรับการสร้างและทดสอบ Selenium โดยใช้ Dockerfile ในไดเร็กทอรีรูปภาพ dev
Selenium ถูกสร้างขึ้นโดยใช้เครื่องมือสร้างทั่วไปที่เรียกว่า Bazel เพื่อให้เราสามารถจัดการการดาวน์โหลดที่ต้องพึ่งพา สร้างไบนารีที่จำเป็น สร้างและปล่อยแพ็คเกจ และดำเนินการทดสอบได้อย่างง่ายดาย ทั้งหมดอย่างรวดเร็วและมีประสิทธิภาพ สำหรับการอภิปรายโดยละเอียดเพิ่มเติม โปรดอ่านบทความของ Simon Stewart เกี่ยวกับการสร้างซีลีเนียม
บ่อยครั้งที่เราห่อคำสั่ง Bazel ด้วยกระดาษห่อ Rake แบบกำหนดเองของเรา สิ่งเหล่านี้รันด้วยคำสั่ง ./go go
คำสั่ง Bazel ทั่วไปคือ:
bazel build — ประเมินการพึ่งพา คอมไพล์ไฟล์ต้นฉบับ และสร้างไฟล์เอาท์พุตสำหรับเป้าหมายที่ระบุ ใช้เพื่อสร้างไบนารีที่ปฏิบัติการได้ ไลบรารี หรือส่วนอื่นๆ
bazel run — สร้างเป้าหมายแล้วดำเนินการ โดยทั่วไปจะใช้สำหรับเป้าหมายที่สร้างไบนารีที่ปฏิบัติการได้
bazel test — สร้างและรันเป้าหมายในบริบทพร้อมฟังก์ชันการทดสอบเพิ่มเติม
bazel query - ระบุเป้าหมายที่มีอยู่สำหรับเส้นทางที่ให้ไว้
แต่ละโมดูลที่สามารถสร้างได้ถูกกำหนดไว้ในไฟล์ BUILD.bazel ในการรันโมดูล คุณอ้างถึงโมดูลโดยขึ้นต้นด้วย // จากนั้นรวมพาธสัมพัทธ์ไปยังไฟล์ที่กำหนด จากนั้น : ตามด้วยชื่อของเป้าหมาย ตัวอย่างเช่น เป้าหมายในการสร้าง Grid มีชื่อว่า executable-grid และถูกกำหนดไว้ในไฟล์ 'selenium/java/src/org/openqa/selenium/grid/BAZEL.build' ดังนั้นในการสร้างกริดคุณจะต้องรัน: bazel build //java/src/org/openqa/selenium/grid:executable-grid
เอกสารของ Bazel มีคำแนะนำที่มีประโยชน์สำหรับทางลัดต่างๆ และวิธีการทั้งหมดในการสร้างหลายเป้าหมาย ซึ่ง Selenium ใช้งานอยู่บ่อยครั้ง
หากต้องการสร้างทุกอย่างสำหรับภาษาที่กำหนด:
bazel build //<ภาษา>/...
หากต้องการสร้างเฉพาะกริดจะมีชื่อนามแฝงให้ใช้ (บันทึกจะแสดงตำแหน่งของโถเอาต์พุต):
bazel สร้างตาราง
เพื่อให้สิ่งต่าง ๆ ง่ายขึ้น การสร้างการโยงแต่ละอันสามารถทำได้ด้วยคำสั่ง ./go นี้
./go <ภาษา>:build
ทีมงานส่วนใหญ่ใช้ Intellij ในการแก้ไขในแต่ละวัน หากคุณทำงานใน IntelliJ เราขอแนะนำอย่างยิ่งให้ติดตั้งปลั๊กอิน Bazel IJ ซึ่งมีการบันทึกไว้บนเว็บไซต์ของตัวเอง
หากต้องการใช้ Selenium กับปลั๊กอิน IntelliJ Bazel ให้นำเข้าพื้นที่เก็บข้อมูลเป็นโปรเจ็กต์ Bazel และเลือกไฟล์มุมมองโปรเจ็กต์จากไดเร็กทอรีสคริปต์ ij.bazelproject สำหรับ Mac/Linux และ ij-win.bazelproject สำหรับ Windows
นอกจากนี้เรายังใช้ Google Java Format สำหรับการขุย ดังนั้นการใช้ Google Java Formatter Plugin จึงมีประโยชน์ มีขั้นตอนไม่กี่ขั้นตอนในการทำให้มันใช้งานได้ ดังนั้นโปรดอ่านเอกสารประกอบการกำหนดค่า นอกจากนี้ยังมีสคริปต์การจัดรูปแบบอัตโนมัติที่สามารถเรียกใช้: ./scripts/format.sh
แม้ว่า Selenium ไม่ได้ถูกสร้างด้วย Maven แต่คุณสามารถสร้างและติดตั้งชิ้นส่วน Selenium เพื่อให้ Maven ใช้ในเครื่องได้โดยการปรับใช้กับที่เก็บ Maven ในเครื่องของคุณ ( ~/.m2/repository ) โดยใช้:
./go java: ติดตั้ง
การขึ้นต่อกันถูกกำหนดไว้ในไฟล์ maven_deps.bzl หากต้องการอัปเดตและปักหมุดการอ้างอิงใหม่โดยอัตโนมัติ ให้รัน:
./go java: อัปเดต
คุณสามารถรันโค้ด Python ในเครื่องได้โดยอัพเดตไฟล์ที่สร้างขึ้นในไดเร็กทอรี python โดยใช้:
./go py: อัปเดต
หากต้องการติดตั้ง Selenium ภายในเครื่องตามการคอมมิตเฉพาะ คุณสามารถใช้:
./go py: ติดตั้ง
แทนที่จะใช้ irb คุณสามารถสร้าง REPL แบบโต้ตอบด้วยอัญมณีทั้งหมดที่โหลดโดยใช้: bazel run //rb:console
หากคุณต้องการแก้ไขโค้ด คุณสามารถทำได้ผ่านทาง debug gem:
เพิ่ม binding.break ในโค้ดที่คุณต้องการให้ดีบักเกอร์เริ่มต้น
รันการทดสอบด้วยการกำหนดค่า ruby_debug : bazel test --config ruby_debug <test>
เมื่อดีบักเกอร์เริ่มทำงาน ให้รันสิ่งต่อไปนี้ในเทอร์มินัลแยกต่างหากเพื่อเชื่อมต่อกับดีบักเกอร์:
bazel-ซีลีเนียม/ภายนอก/มัด/ถัง/rdbg -A
หากคุณต้องการใช้ RubyMine เพื่อการพัฒนา คุณสามารถกำหนดค่าได้โดยใช้ Bazel artifacts:
เปิด rb/ เป็นไดเร็กทอรีโปรเจ็กต์หลัก
รัน bundle exec rake update ตามความจำเป็นเพื่อสร้างส่วนที่ทันสมัย หากวิธีนี้ใช้ไม่ได้ผล ให้รัน ./go rb:update จากไดเร็กทอรี selenium (พาเรนต์)
ใน การตั้งค่า / ภาษาและกรอบงาน / Ruby SDK และ Gems เพิ่ม Interpreter ใหม่ชี้ไปที่ ../bazel-selenium/external/rules_ruby_dist/dist/bin/ruby /bazel-selenium/external/rules_ruby_dist/dist/bin/ruby
ตอนนี้คุณควรจะสามารถเรียกใช้และดีบักข้อมูลจำเพาะใดๆ ได้แล้ว โดยจะใช้ Chrome เป็นค่าเริ่มต้น แต่คุณสามารถแก้ไขได้โดยใช้ตัวแปรสภาพแวดล้อมที่ได้รับการรักษาความปลอดภัยในส่วนการทดสอบ Ruby ด้านล่าง
หากต้องการให้ Carbo.Bazel.lock ซิงโครไนซ์กับ Cargo.lock ให้รัน:
CARGO_BAZEL_REPIN=การซิงค์ bazel ที่แท้จริง --เท่านั้น=ลัง
มีการกำหนดค่า Bazel จำนวนมากสำหรับการทดสอบโดยเฉพาะ
นี่คือตัวอย่างข้อโต้แย้งที่เราใช้ในการทดสอบโค้ด Selenium:
--pin_browsers - เรียกใช้เบราว์เซอร์เวอร์ชันเฉพาะที่กำหนดไว้ในบิลด์ (เวอร์ชันได้รับการอัปเดตเป็นประจำ)
--headless - เรียกใช้เบราว์เซอร์ในโหมด headless (รองรับ Chrome, Edge และ Firefox)
--flaky_test_attempts 3 - เรียกใช้การทดสอบที่ล้มเหลวอีกครั้งสูงสุด 3 ครั้ง
--local_test_jobs 1 - ควบคุมความขนานของการทดสอบ
--cache_test_results=no , -t- - ปิดการใช้งานแคชของผลการทดสอบและรันใหม่ทั้งหมด
--test_output all - พิมพ์เอาต์พุตทั้งหมดจากการทดสอบ ไม่ใช่แค่ข้อผิดพลาด
--test_output streamed - รันการทดสอบทั้งหมดทีละรายการและพิมพ์เอาต์พุตทันที
--test_env FOO=bar - ส่งตัวแปรสภาพแวดล้อมเพิ่มเติมเพื่อทดสอบกระบวนการ
--run_under="xvfb-run -a" - คำนำหน้าที่จะแทรกก่อนการดำเนินการ
การทดสอบซีลีเนียมสามารถกรองได้ตามขนาด:
เล็ก — โดยทั่วไปแล้วจะทดสอบหน่วยเมื่อไม่ได้เปิดเบราว์เซอร์
ใหญ่ — โดยทั่วไปแล้วจะเป็นการทดสอบที่ขับเคลื่อนเบราว์เซอร์จริงๆ
ปานกลาง — การทดสอบที่เกี่ยวข้องมากกว่าการทดสอบหน่วยธรรมดา แต่ไม่ได้ขับเคลื่อนเบราว์เซอร์อย่างเต็มที่
สิ่งเหล่านี้สามารถกรองได้โดยใช้อาร์กิวเมนต์ test_size_filters ดังนี้:
ทดสอบ bazel //<ภาษา>/... --test_size_filters=small
การทดสอบสามารถกรองได้ด้วยแท็ก เช่น:
การทดสอบ bazel //<ภาษา>/... --test_tag_filters=this,-not-this
หากต้องการรันการทดสอบหน่วย:
การทดสอบ bazel //java/... --test_size_filters=small
หากต้องการรันการทดสอบการรวม:
การทดสอบ bazel //java/... --test_size_filters=medium
หากต้องการรันการทดสอบเบราว์เซอร์:
การทดสอบ Bazel //java/... --test_size_filters=large --test_tag_filters=<เบราว์เซอร์>
หากต้องการดำเนินการทดสอบเฉพาะ:
การทดสอบ bazel //java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest
หากต้องการรันการทดสอบ:
การทดสอบ bazel //javascript/node/selenium-webdriver:tests
คุณสามารถใช้ --test_env เพื่อส่งผ่านชื่อเบราว์เซอร์เป็น SELENIUM_BROWSER
การทดสอบ bazel //javascript/node/selenium-webdriver:tests --test_env=SELENIUM_BROWSER=firefox
รันการทดสอบหน่วยด้วย:
การทดสอบ bazel //py:unit
หากต้องการรันการทดสอบกับเบราว์เซอร์เฉพาะ:
การทดสอบ bazel //py:test-<browsername>
หากต้องการรันการทดสอบ Python ทั้งหมด:
ทดสอบ Bazel //py:all
เป้าหมายการทดสอบ:
| สั่งการ | คำอธิบาย |
|---|---|
bazel test //rb/... | รันยูนิต การทดสอบการรวมทั้งหมด และผ้าสำลี |
bazel test //rb:lint | เรียกใช้ RuboCop linter |
bazel test //rb/spec/... | เรียกใช้การทดสอบหน่วยและการรวมสำหรับเบราว์เซอร์ทั้งหมด |
bazel test //rb/spec/... --test_size_filters small | เรียกใช้การทดสอบหน่วย |
bazel test //rb/spec/unit/... | เรียกใช้การทดสอบหน่วย |
bazel test //rb/spec/... --test_size_filters large | เรียกใช้การทดสอบการรวมสำหรับเบราว์เซอร์ทั้งหมด |
bazel test //rb/spec/integration/... | เรียกใช้การทดสอบการรวมสำหรับเบราว์เซอร์ทั้งหมด |
bazel test //rb/spec/integration/... --test_tag_filters firefox | เรียกใช้การทดสอบการรวมสำหรับ Firefox ในเครื่องเท่านั้น |
bazel test //rb/spec/integration/... --test_tag_filters firefox-remote | รันการทดสอบการรวมสำหรับ Firefox ระยะไกลเท่านั้น |
bazel test //rb/spec/integration/... --test_tag_filters firefox,firefox-remote | เรียกใช้การทดสอบการรวมสำหรับ Firefox ภายในและระยะไกล |
เป้าหมายการทดสอบ Ruby มีชื่อเดียวกับไฟล์ spec ที่ลบ _spec.rb ออก ดังนั้นคุณจึงสามารถเรียกใช้ทีละรายการได้ เป้าหมายการทดสอบการรวมยังมีเบราว์เซอร์และส่วนต่อท้ายระยะไกลเพื่อควบคุมเบราว์เซอร์ที่จะเลือกและจะใช้กริดหรือไม่
| ไฟล์ทดสอบ | เป้าหมายการทดสอบ |
|---|---|
rb/spec/unit/selenium/webdriver/proxy_spec.rb | //rb/spec/unit/selenium/webdriver:proxy |
rb/spec/integration/selenium/webdriver/driver_spec.rb | //rb/spec/integration/selenium/webdriver:driver-chrome |
rb/spec/integration/selenium/webdriver/driver_spec.rb | //rb/spec/integration/selenium/webdriver:driver-chrome-remote |
rb/spec/integration/selenium/webdriver/driver_spec.rb | //rb/spec/integration/selenium/webdriver:driver-firefox |
rb/spec/integration/selenium/webdriver/driver_spec.rb | //rb/spec/integration/selenium/webdriver:driver-firefox-remote |
เบราว์เซอร์ที่รองรับ:
chrome
edge
firefox
firefox-beta
ie
safari
safari-preview
นอกเหนือจากตัวอย่างตัวเลือกทั่วไปแล้ว ต่อไปนี้คือตัวอย่างเฉพาะของ Ruby เพิ่มเติม:
--test_arg "-eTimeouts" - ทดสอบเฉพาะข้อมูลจำเพาะที่มีชื่อรวม "Timeouts"
--test_arg "<any other RSpec argument>" - ส่งผ่านอาร์กิวเมนต์ RSpec พิเศษใดๆ (ดูที่ bazel run @bundle//bin:rspec -- --help )
ตัวแปรสภาพแวดล้อมที่รองรับสำหรับใช้กับ --test_env :
WD_SPEC_DRIVER - ไดรเวอร์ที่จะทดสอบ ทั้งชื่อเบราว์เซอร์หรือ 'ระยะไกล' (ตั้งค่าโดย Bazel)
WD_REMOTE_BROWSER - เมื่อ WD_SPEC_DRIVER อยู่ remote ชื่อของเบราว์เซอร์ที่จะทดสอบ (ตั้งค่าโดย Bazel)
WD_REMOTE_URL - URL ของเซิร์ฟเวอร์ที่ทำงานอยู่แล้วเพื่อใช้สำหรับการทดสอบระยะไกล
DOWNLOAD_SERVER - เมื่อไม่ได้ตั้งค่า WD_REMOTE_URL ไม่ว่าจะดาวน์โหลดและใช้เวอร์ชันเซิร์ฟเวอร์ที่ออกล่าสุดสำหรับการทดสอบระยะไกลหรือไม่
DEBUG - เปิดการดีบักแบบละเอียด
HEADLESS - สำหรับโครเมียม, edge และ firefox ทำการทดสอบในโหมดไม่มีหัว
DISABLE_BUILD_CHECK - สำหรับโครเมียมและขอบ ไม่ว่าจะเพิกเฉยต่อไดรเวอร์และเวอร์ชันของเบราว์เซอร์ที่ไม่ตรงกัน (อนุญาตให้ทดสอบ Canary builds)
CHROME_BINARY - เส้นทางสำหรับทดสอบเบราว์เซอร์ Chrome เฉพาะ
CHROMEDRIVER_BINARY - เส้นทางสำหรับทดสอบ ChromeDriver เฉพาะ
EDGE_BINARY - เส้นทางสำหรับทดสอบเบราว์เซอร์ Edge เฉพาะ
MSEDGEDRIVER_BINARY - พาธสำหรับทดสอบ msedgedriver เฉพาะ
FIREFOX_BINARY - เส้นทางสำหรับทดสอบเบราว์เซอร์ Firefox เฉพาะ
GECKODRIVER_BINARY - เส้นทางสำหรับทดสอบ GeckoDriver เฉพาะ
หากต้องการรันด้วย Ruby เวอร์ชันเฉพาะ คุณสามารถเปลี่ยนเวอร์ชันใน rb/.ruby-version หรือจากบรรทัดคำสั่ง:
เสียงสะท้อน '<XYZ>' > rb/.ruby-version
ปัจจุบันการทดสอบ .NET ใช้ได้กับเบราว์เซอร์ที่ปักหมุดไว้เท่านั้น ดังนั้นอย่าลืมรวมไว้ด้วย
รันการทดสอบทั้งหมดด้วย:
การทดสอบ bazel //dotnet/test/common:AllTests --pin_browsers=true
คุณสามารถรันการทดสอบเฉพาะได้โดยการระบุชื่อคลาส:
การทดสอบ bazel //dotnet/test/common:ElementFindingTest --pin_browsers=true
หากโมดูลรองรับหลายเบราว์เซอร์:
การทดสอบ bazel //dotnet/test/common:ElementFindingTest-edge --pin_browsers=true
การทดสอบสนิมจะดำเนินการด้วย:
การทดสอบ bazel // สนิม /...
ตามค่าเริ่มต้น Bazel จะทำการทดสอบเหล่านี้ใน X-server UI ปัจจุบันของคุณ หากคุณต้องการ คุณสามารถรันโปรแกรมเหล่านั้นใน X-server เสมือนหรือซ้อนกันได้
เรียกใช้เซิร์ฟเวอร์ X Xvfb :99 หรือ Xnest :99
เรียกใช้ตัวจัดการหน้าต่าง เช่น DISPLAY=:99 jwm
ทำการทดสอบที่คุณสนใจ:
การทดสอบ Bazel --test_env=DISPLAY=:99 //java/... --test_tag_filters=chrome
วิธีง่ายๆ ในการรันการทดสอบใน X-server เสมือนคือการใช้ฟังก์ชัน --run_under ของ Bazel:
bazel test --run_under="xvfb-run -a" //java/...
สามารถดูเอกสาร API ได้ที่นี่:
ค#
จาวาสคริปต์
ชวา
หลาม
ทับทิม
หากต้องการอัปเดตเอกสารประกอบ API สำหรับภาษาใดภาษาหนึ่ง: ./go <language>:docs
หากต้องการอัปเดตเอกสารทั้งหมด: ./go all:docs
โปรดทราบว่าขณะนี้การสร้าง JavaScript ใช้งานไม่ได้
กระบวนการทั้งหมดในการเผยแพร่สามารถพบได้ในวิกิ
การเปิดตัวเป็นการผสมผสานระหว่างการสร้างและการเผยแพร่ ซึ่งมักต้องมีการประสานงานในการดำเนินการหลายครั้งและการประมวลผลเพิ่มเติม ตามที่กล่าวไว้ในส่วนการสร้าง เราใช้งาน Rake ด้วยคำสั่ง ./go go สำหรับสิ่งเหล่านี้ คำสั่ง ./go go เหล่านี้มีอาร์กิวเมนต์ --stamp เพื่อให้ข้อมูลที่จำเป็นเกี่ยวกับเนื้อหาที่สร้างขึ้น
คุณสามารถสร้างและเผยแพร่ทุกสิ่งด้วย:
./go ทั้งหมด: ปล่อย
หากต้องการสร้างและเผยแพร่ภาษาเฉพาะ:
./go <ภาษา>:ปล่อย
หากคุณมีสิทธิ์เข้าถึงพื้นที่เก็บข้อมูล Selenium EngFlow คุณจะสามารถสร้างเนื้อหาจากระยะไกลและดาวน์โหลดภายในเครื่องได้โดยใช้:
./go all:release['--config', 'release']