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

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


14
รับแหล่ง HTML ของ WebElement ใน Selenium WebDriver โดยใช้ Python
ฉันกำลังใช้การผูก Python เพื่อเรียกใช้ Selenium WebDriver: from selenium import webdriver wd = webdriver.Firefox() ฉันรู้ว่าฉันสามารถคว้าองค์ประกอบเว็บได้เช่นนี้: elem = wd.find_element_by_css_selector('#my-id') และฉันรู้ว่าฉันสามารถรับซอร์สเต็มหน้าด้วย ... wd.page_source แต่มีเพื่อรับ "แหล่งองค์ประกอบ" หรือไม่ elem.source # <-- returns the HTML as a string ซีเลเนี่ยม webdriver docs สำหรับ Python นั้นไม่มีอยู่จริงและฉันไม่เห็นอะไรเลยในรหัสที่ดูเหมือนว่าจะเปิดใช้งานการทำงานนั้น มีความคิดเกี่ยวกับวิธีที่ดีที่สุดในการเข้าถึง HTML ขององค์ประกอบ (และลูก ๆ ) หรือไม่

30
การดีบักข้อผิดพลาด“ องค์ประกอบไม่สามารถคลิกได้ที่จุด” ข้อผิดพลาด
ฉันเห็นสิ่งนี้เฉพาะใน Chrome ข้อความแสดงข้อผิดพลาดทั้งหมดอ่าน: "org.openqa.selenium.WebDriverException: องค์ประกอบไม่สามารถคลิกได้ที่จุด (411, 675) องค์ประกอบอื่น ๆ จะได้รับการคลิก: ... " องค์ประกอบที่ 'จะได้รับการคลิก' คือด้านข้างขององค์ประกอบที่เป็นปัญหาไม่ใช่ด้านบนของมันและไม่ทับซ้อนกันไม่ย้ายไปมารอบหน้า ฉันลองเพิ่มออฟเซ็ตแล้ว แต่ก็ไม่ได้ผล รายการอยู่ในหน้าต่างที่แสดงโดยไม่จำเป็นต้องเลื่อน


10
ฉันจะค้นหาองค์ประกอบที่มีข้อความเฉพาะใน Selenium Webdriver (Python) ได้อย่างไร
ฉันพยายามทดสอบอินเตอร์เฟส javascript ที่ซับซ้อนด้วย Selenium (ใช้ส่วนต่อประสาน Python และในเบราว์เซอร์หลายตัว) ฉันมีปุ่มหลายรูปแบบ: <div>My Button</div> ฉันต้องการค้นหาปุ่มตาม "ปุ่มของฉัน" (หรือไม่ตรงตามตัวพิมพ์ใหญ่ - เล็กและตรงเช่น "ปุ่มของฉัน" หรือ "ปุ่ม") ฉันพบว่ามันยากอย่างน่าอัศจรรย์เท่าที่ฉันรู้สึกว่าฉันขาดอะไรบางอย่างที่เห็นได้ชัด สิ่งที่ดีที่สุดที่ฉันมีคือ: driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]') อย่างไรก็ตามแบบตรงตามตัวพิมพ์ใหญ่ - เล็ก สิ่งอื่น ๆ ที่ฉันได้ลองทำก็คือวนซ้ำทั้งหมดในหน้าและตรวจสอบคุณสมบัติ element.text อย่างไรก็ตามทุกครั้งที่คุณได้รับแบบฟอร์ม: <div class="outer"><div class="inner">My Button</div></div> div.outer ยังมี "ปุ่มของฉัน" เป็นข้อความ ในการแก้ไขปัญหานั้นฉันได้ลองดูเพื่อดูว่า div.outer เป็นพาเรนต์ของ div.inner แต่ไม่สามารถหาวิธีการทำเช่นนั้นได้ การทดสอบไม่เท่ากับ div.outer) นอกจากนี้การวนองค์ประกอบทั้งหมดในหน้านั้นดูเหมือนจะช้ามากอย่างน้อยก็ใช้ …

9
มีวิธีรับองค์ประกอบโดย XPath โดยใช้ JavaScript ใน Selenium WebDriver หรือไม่
ฉันกำลังมองหาบางสิ่งที่ชอบ: getElementByXpath(//html[1]/body[1]/div[1]).innerHTML ฉันต้องการรับองค์ประกอบ HTML ภายในโดยใช้ JS (เพื่อใช้ใน Selenium WebDriver / Java เนื่องจาก WebDriver ไม่สามารถค้นหาได้เอง) แต่ทำได้อย่างไร ฉันสามารถใช้แอตทริบิวต์ ID แต่องค์ประกอบบางอย่างไม่มีแอตทริบิวต์ ID [แก้ไขแล้ว] ฉันใช้ jsoup เพื่อให้เสร็จใน Java ที่เหมาะกับความต้องการของฉัน


24
Selenium c # Webdriver: รอจนกระทั่งมีองค์ประกอบอยู่
ฉันต้องการตรวจสอบให้แน่ใจว่ามีองค์ประกอบอยู่ก่อนที่ webdriver จะเริ่มทำสิ่งต่างๆ ฉันกำลังพยายามทำให้สิ่งนี้เป็นจริง: WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5)); wait.Until(By.Id("login")); ฉันส่วนใหญ่ดิ้นรนวิธีการตั้งค่าฟังก์ชั่น anynomous ..

13
วิธีการเลือกค่าเมนูแบบหล่นลงด้วย Selenium โดยใช้ Python?
ฉันจำเป็นต้องเลือกองค์ประกอบจากหนึ่งหล่นลงเมนู ตัวอย่างเช่น: <select id="fruits01" class="select" name="fruits"> <option value="0">Choose your fruits:</option> <option value="1">Banana</option> <option value="2">Mango</option> </select> 1)ก่อนอื่นฉันต้องคลิกมัน ฉันทำนี่: inputElementFruits = driver.find_element_by_xpath("//select[id='fruits']").click() 2)Mangoหลังจากนั้นผมต้องเลือกองค์ประกอบที่ดีให้พูด ฉันพยายามทำด้วยinputElementFruits.send_keys(...)แต่ไม่ได้ผล

6
วิธีการตรวจสอบนิพจน์ XPath ในเครื่องมือนักพัฒนา Chrome หรือ Firefox ของ Firebug
ฉันจะตรวจสอบ XPath ของฉันได้อย่างไร ฉันใช้เครื่องมือ Chrome Developers เพื่อตรวจสอบองค์ประกอบและสร้าง XPath ของฉัน ฉันตรวจสอบโดยใช้ปลั๊กอินตัวตรวจสอบ XPath ของ Chrome แต่ไม่ได้ให้ผลลัพธ์เสมอ เป็นวิธีที่ดีกว่าในการตรวจสอบ XPath ของฉัน ฉันได้ลองใช้ Firebug เพื่อตรวจสอบข้อผิดพลาดและใช้ FirePath เพื่อตรวจสอบ แต่ Firepath จะตรวจสอบ XPath ด้วยหรือไม่ ตัวเลือกสุดท้ายของฉันคือใช้ซีลีเนียม WebDriver เพื่อยืนยัน XPath ของฉัน

4
ฉันจะรับ URL ปัจจุบันใน Selenium Webdriver 2 Python ได้อย่างไร
ฉันกำลังพยายามหา URL ปัจจุบันหลังจากมีการนำทางหลายชุดในซีลีเนียม ฉันรู้ว่ามีคำสั่งเรียกว่า getLocation สำหรับ ruby ​​แต่ฉันไม่พบไวยากรณ์สำหรับ Python

18
ทดสอบว่าองค์ประกอบมีอยู่โดยใช้ซีลีเนียม WebDriver หรือไม่
มีวิธีทดสอบว่ามีองค์ประกอบอยู่หรือไม่? เมธอด findElement ใด ๆ จะสิ้นสุดลงในข้อยกเว้น แต่นั่นไม่ใช่สิ่งที่ฉันต้องการเพราะอาจเป็นเพราะองค์ประกอบนั้นไม่มีอยู่และไม่เป็นไรนั่นไม่ใช่การทดสอบที่ล้มเหลวดังนั้นข้อยกเว้นจึงไม่สามารถแก้ไขได้ ฉันพบโพสต์นี้: Selenium c # Webdriver: รอจนกว่าจะมีองค์ประกอบ แต่นี่สำหรับ C # และฉันไม่ค่อยเก่ง ทุกคนสามารถแปลรหัสเป็น Java ได้หรือไม่ ฉันขอโทษพวกฉันลองใช้ Eclipse แต่ฉันไม่เข้าใจในโค้ด Java นี่คือรหัส: public static class WebDriverExtensions{ public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds){ if (timeoutInSeconds > 0){ var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)); return …

16
Selenium Webdriver เปิดหน้าต่างเบราว์เซอร์ในเบื้องหลังได้ไหม
ฉันมีชุดทดสอบซีลีเนียมที่ใช้การทดสอบจำนวนมากและในการทดสอบใหม่แต่ละครั้งมันจะเปิดหน้าต่างเบราว์เซอร์ที่ด้านบนของหน้าต่างอื่น ๆ ที่ฉันเปิดไว้ สั่นสะเทือนมากในขณะที่ทำงานในสภาพแวดล้อมท้องถิ่น มีวิธีใดที่จะบอกซีลีเนียมหรือ OS (MAC) เพื่อเปิดหน้าต่างในพื้นหลัง

13
จะใช้งานกรณีทดสอบ Selenium WebDriver ใน Chrome ได้อย่างไร
ฉันลองสิ่งนี้ WebDriver driver = new ChromeDriver(); แต่ฉันได้รับข้อผิดพลาดเป็น การทดสอบล้มเหลว: setUp (com.TEST): พา ธ ไปยังโปรแกรมควบคุมที่ทำงานได้จะต้องตั้งค่าโดยคุณสมบัติระบบ webdriver.chrome.driver; สำหรับข้อมูลเพิ่มเติมโปรดดูรหัสที่นี่ สามารถดาวน์โหลดเวอร์ชันล่าสุดได้จากลิงก์ ฉันจะทำให้ Chrome ทดสอบกรณีทดสอบ Selenium-WebDriver ได้อย่างไร

13
การรีเฟรชหน้าเว็บโดย WebDriver เมื่อรอเงื่อนไขเฉพาะ
ฉันกำลังมองหาวิธีที่สวยงามกว่านี้ในการรีเฟรชหน้าเว็บในระหว่างการทดสอบ (ฉันใช้ Selenium2) ฉันเพิ่งส่งคีย์ F5 แต่ฉันสงสัยว่าคนขับมีวิธีการรีเฟรชหน้าเว็บทั้งหมดหรือไม่นี่คือรหัสของฉัน while(driver.findElements(By.xpath("//*[text() = 'READY']")).size() == 0 ) driver.findElement(By.xpath("//body")).sendKeys(Keys.F5); //element appear after text READY is presented driver.findElement(By.cssSelector("div.column a")).click(); อาจเป็นทางออกที่ดีกว่าสำหรับการค้นหาองค์ประกอบในหน้ารีเฟรชด้วยตนเอง

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