คำถามติดแท็ก selenium-webdriver

Selenium-WebDriver มี WebDriver API สำหรับควบคุมเบราว์เซอร์ในภาษาโปรแกรมต่างๆ ("การผูกภาษา") เมื่อใช้แท็กนี้ให้เพิ่มแท็กสำหรับภาษาโปรแกรมที่คุณใช้

11
ซีลีเนียมสามารถโต้ตอบกับเซสชันเบราว์เซอร์ที่มีอยู่ได้หรือไม่?
มีใครทราบบ้างว่า Selenium (ควรใช้ WebDriver) สามารถสื่อสารและดำเนินการผ่านเบราว์เซอร์ที่ทำงานอยู่ก่อนเปิดตัว Selenium Client ได้หรือไม่? ฉันหมายถึงถ้า Selenium สามารถสื่อสารกับเบราว์เซอร์ได้โดยไม่ต้องใช้ Selenium Server (อาจเป็น Internet Explorer ที่เปิดใช้งานด้วยตนเอง)

2
รับค่าส่งคืนของโค้ด Javascript ในซีลีเนียม
ฉันใช้ Selenium2 สำหรับการทดสอบอัตโนมัติบางอย่างในเว็บไซต์ของฉันและฉันต้องการรับค่าส่งคืนของโค้ด Javascript บางส่วน หากฉันมีfoobar()ฟังก์ชัน Javascript ในหน้าเว็บของฉันและฉันต้องการเรียกสิ่งนั้นและรับค่าส่งคืนเป็นรหัส Python ของฉันฉันจะเรียกให้ทำอะไรได้บ้าง?

24
ปล่อย Selenium chromedriver.exe จากหน่วยความจำ
chromedriver.exeฉันจะตั้งค่ารหัสหลามที่จะเรียกใช้ซีลีเนียม ในตอนท้ายของการรันฉันต้องbrowser.close()ปิดอินสแตนซ์ ( browser = webdriver.Chrome()) ฉันเชื่อว่าควรปล่อยchromedriver.exeจากหน่วยความจำ (ฉันใช้ Windows 7) อย่างไรก็ตามหลังจากการรันแต่ละครั้งจะมีหนึ่งchromedriver.exeอินสแตนซ์ที่ยังคงอยู่ในหน่วยความจำ ฉันหวังว่าจะมีวิธีที่ฉันสามารถเขียนบางอย่างใน python เพื่อฆ่าchromedriver.exeกระบวนการนี้ได้ เห็นได้ชัดbrowser.close()ว่าไม่ได้ผล ขอบคุณ.


17
Selenium WebDriver: รอให้หน้าที่ซับซ้อนที่มี JavaScript โหลด
ฉันมีเว็บแอปพลิเคชันที่จะทดสอบกับซีลีเนียม มี JavaScript จำนวนมากที่ทำงานบนการโหลดหน้าเว็บ โค้ด JavaScript นี้เขียนไม่ค่อยดี แต่ไม่สามารถเปลี่ยนแปลงอะไรได้ ดังนั้นการรอให้องค์ประกอบปรากฏใน DOM ด้วยfindElement()วิธีการจึงไม่ใช่ทางเลือก ฉันต้องการสร้างฟังก์ชันทั่วไปใน Java เพื่อรอให้เพจโหลดวิธีแก้ปัญหาที่เป็นไปได้คือ: เรียกใช้ WebDriver รูปแบบ JavaScript สคริปต์และเก็บผลของในตัวแปรสตริงdocument.body.innerHTMLbody เปรียบเทียบbodyตัวแปรกับเวอร์ชันก่อนหน้าของbody. ถ้าพวกเขาจะเหมือนกันจากนั้นตั้งค่าเพิ่มเคาน์เตอร์notChangedCountกำหนดมิฉะนั้นnotChangedCountจะเป็นศูนย์ รอสักครู่ (ตัวอย่างเช่น 50 ms) หากเพจไม่มีการเปลี่ยนแปลงในบางครั้ง (เช่น 500 มิลลิวินาที) ดังนั้นให้notChangedCount >= 10ออกจากลูปมิฉะนั้นวนซ้ำไปที่ขั้นตอนแรก คุณคิดว่าเป็นวิธีแก้ปัญหาที่ถูกต้องหรือไม่?

15
ฉันจะขอให้ Selenium-WebDriver รอสองสามวินาทีใน Java ได้อย่างไร
ฉันกำลังทำงานกับ Java Selenium-WebDriver ฉันเพิ่ม driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS); และ WebElement textbox = driver.findElement(By.id("textbox")); เนื่องจากแอปพลิเคชันของฉันใช้เวลาไม่กี่วินาทีในการโหลดส่วนติดต่อผู้ใช้ ผมจึงตั้งเวลา 2 วินาทีโดยนัย แต่ฉันไม่พบกล่องข้อความองค์ประกอบ จากนั้นฉันก็เพิ่ม Thread.sleep(2000); ตอนนี้ใช้งานได้ดี วิธีไหนดีกว่ากัน

14
วิธีบังคับให้ Selenium WebDriver คลิกองค์ประกอบที่มองไม่เห็นในปัจจุบัน
ฉันใช้ Selenium 2 Java API กับ FirefoxDriver เมื่อฉันกรอกแบบฟอร์มช่องทำเครื่องหมายจะถูกเพิ่มลงในเพจโดยขึ้นอยู่กับอินพุตของฟอร์ม ฉันต้องการจำลองการคลิกที่ช่องทำเครื่องหมายโดยใช้ซีลีเนียม องค์ประกอบสามารถมองเห็นได้และใช้งานได้ในเบราว์เซอร์ทั่วไป แต่ซีลีเนียมยืนยันว่ามองไม่เห็นองค์ประกอบ "Element is not currently visible and so may not be interacted with" ฉันสามารถบังคับให้ซีลีเนียมเพิกเฉยต่อสถานะที่มองไม่เห็นขององค์ประกอบได้หรือไม่? ฉันจะบังคับให้ซีลีเนียมโต้ตอบกับองค์ประกอบที่มองไม่เห็นได้อย่างไร

8
Python Selenium เข้าถึงซอร์ส HTML
ฉันจะรับซอร์สHTMLในตัวแปรโดยใช้โมดูลซีลีเนียมกับ Python ได้อย่างไร ฉันต้องการทำสิ่งนี้: from selenium import webdriver browser = webdriver.Firefox() browser.get("http://example.com") if "whatever" in html_source: # Do something else: # Do something else ฉันจะทำเช่นนี้ได้อย่างไร? ฉันไม่รู้วิธีเข้าถึงซอร์ส HTML

12
การอ้างอิงองค์ประกอบเก่า: องค์ประกอบไม่ได้แนบกับเอกสารหน้า
ฉันมีรายการที่มีลิงก์หลายลิงก์ภายใต้แต่ละส่วน แต่ละส่วนมีลิงค์เหมือนกันฉันต้องคลิกลิงค์ใดลิงค์หนึ่งภายใต้แต่ละส่วน ฉันได้เขียนโค้ดด้านล่างนี้แล้ว แต่เมื่อรันมันทำให้ฉันเกิดstale element reference: element is not attached to the page documentข้อผิดพลาด นี่คือรหัสของฉัน: public static void main(String[] args) throws InterruptedException { WebDriver driver = new ChromeDriver(); driver.navigate().to("url......"); driver.findElement(By.id("Login1_txtEmailID")).sendKeys("hourbank5@....com"); driver.findElement(By.id("Login1_txtPassword")).sendKeys("Testing1*"); driver.findElement(By.id("Login1_btnLogin")).click(); List<WebElement> LeftNavLinks=driver.findElements(By.xpath("//*[@id='sliding-navigation']//a")); Thread.sleep(1000); String ben="Benefit Status"; String[] linkTexts = new String[LeftNavLinks.size()]; int i = 0; for (WebElement e …

10
ซีลีเนียม: ข้อยกเว้น FirefoxProfile ไม่สามารถโหลดโปรไฟล์ได้
ตามคำถามก่อนหน้านี้ฉันได้อัปเดต Selenium เป็นเวอร์ชัน 2.0.1 แต่ตอนนี้ฉันมีข้อผิดพลาดอีกครั้งแม้ว่าไฟล์โปรไฟล์จะอยู่ภายใต้/tmp/webdriver-py-profilecopy: ไฟล์ "/home/sultan/Repository/Django/monitor/app/request.py" บรรทัดที่ 236 ในการดำเนินการ เบราว์เซอร์ = Firefox (โปรไฟล์) ไฟล์ "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py" บรรทัด 46 ใน __init__ self.binary, หมดเวลา), ไฟล์ "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py" บรรทัด 46 ใน __init__ self.binary.launch_browser (self.profile) ไฟล์ "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py" บรรทัด 44 ใน launch_browser self._wait_until_connectable () ไฟล์ "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py" บรรทัด 87 ใน _wait_until_connectable เพิ่ม WebDriverException ("ไม่สามารถโหลดโปรไฟล์ได้โปรไฟล์ Dir:% s"% self.profile.path) …

8
วิธีเลือก / รับตัวเลือกแบบเลื่อนลงในซีลีเนียม 2
ฉันกำลังแปลงรหัสซีลีเนียม 1 เป็นซีลีเนียม 2 และไม่พบวิธีง่ายๆในการเลือกป้ายกำกับในเมนูแบบเลื่อนลงหรือรับค่าที่เลือกจากรายการแบบเลื่อนลง คุณรู้วิธีทำในซีลีเนียม 2 หรือไม่? นี่คือสองคำสั่งที่ใช้ได้กับ Selenium 1 แต่ไม่ใช่ใน 2: browser.select("//path_to_drop_down", "Value1"); browser.getSelectedValue("//path_to_drop_down");

9
Selenium Web Driver และ Java ไม่สามารถคลิกองค์ประกอบที่จุด (x, y) องค์ประกอบอื่น ๆ จะได้รับคลิก
ฉันใช้การรออย่างชัดเจนและฉันมีคำเตือน: org.openqa.selenium.WebDriverException: องค์ประกอบไม่สามารถคลิกได้ที่จุด (36, 72) องค์ประกอบอื่น ๆ จะได้รับคลิก: ... ระยะเวลาคำสั่งหรือหมดเวลา: 393 มิลลิวินาที หากฉันใช้Thread.sleep(2000)ฉันไม่ได้รับคำเตือนใด ๆ @Test(dataProvider = "menuData") public void Main(String btnMenu, String TitleResultPage, String Text) throws InterruptedException { WebDriverWait wait = new WebDriverWait(driver, 10); driver.findElement(By.id("navigationPageButton")).click(); try { wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(btnMenu))); } catch (Exception e) { System.out.println("Oh"); } driver.findElement(By.cssSelector(btnMenu)).click(); Assert.assertEquals(driver.findElement(By.cssSelector(TitleResultPage)).getText(), Text); }

16
จะหลีกเลี่ยง“ StaleElementReferenceException” ในซีลีเนียมได้อย่างไร?
ฉันกำลังใช้การทดสอบซีลีเนียมจำนวนมากโดยใช้ Java บางครั้งการทดสอบของฉันล้มเหลวเนื่องจากไฟล์StaleElementReferenceException. คุณช่วยแนะนำแนวทางในการทำให้การทดสอบมีเสถียรภาพมากขึ้นได้ไหม

3
วิธีการรับคุณสมบัติของธาตุจากซีลีเนียม?
ฉันกำลังทำงานกับซีลีเนียมใน Python ฉันต้องการที่จะได้รับ.val()ของ<select>องค์ประกอบและตรวจสอบว่ามันเป็นสิ่งที่ผมคาดหวัง นี่คือรหัสของฉัน: def test_chart_renders_from_url(self): url = 'http://localhost:8000/analyse/' self.browser.get(url) org = driver.find_element_by_id('org') # Find the value of org? ฉันจะทำเช่นนี้ได้อย่างไร? เอกสารซีลีเนียมดูเหมือนจะมีมากมายเกี่ยวกับการเลือกองค์ประกอบ แต่ไม่มีอะไรเกี่ยวกับคุณลักษณะ

3
cssSelector & Xpath แตกต่างกันอย่างไรและข้อใดดีกว่าเมื่อเทียบกับประสิทธิภาพสำหรับการทดสอบข้ามเบราว์เซอร์
ฉันกำลังทำงานกับ Selenium WebDriver 2.25.0 บนเว็บแอปพลิเคชันหลายภาษาและทดสอบเนื้อหาของหน้าเป็นหลัก (สำหรับภาษาต่างๆเช่นอาหรับอังกฤษรัสเซียและอื่น ๆ ) สำหรับแอปพลิเคชันของฉันซึ่งดีกว่าตามประสิทธิภาพและตรวจสอบให้แน่ใจว่าควรรองรับเบราว์เซอร์ทั้งหมด (เช่น IE 7,8,9, FF, Chrome เป็นต้น) ขอบคุณล่วงหน้าสำหรับคำแนะนำที่มีค่าของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.