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

ซีลีเนียมเป็นเครื่องมือโอเพนซอร์สยอดนิยมสำหรับการทำให้เว็บเบราว์เซอร์อัตโนมัติ เมื่อใช้แท็กนี้ให้ใส่แท็กอื่น ๆ สำหรับส่วนประกอบเฉพาะที่คุณใช้เช่นซีลีเนียม - เว็บไดร์เวอร์สำหรับการผูกภาษาซีลีเนียม - ไอเดียซีลีเนียมกริด ฯลฯ


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 ขององค์ประกอบ (และลูก ๆ ) หรือไม่

28
ซีลีเนียมโดยใช้ Python - โปรแกรมปฏิบัติการ Geckodriver จำเป็นต้องอยู่ใน PATH
ฉันยังใหม่กับการเขียนโปรแกรมและเริ่มต้นเมื่อPythonประมาณ 2 เดือนที่แล้วและกำลังไปที่Automate the Boring Stuffของ Sweigart ด้วยข้อความPython ฉันใช้ IDLE แล้วติดตั้งโมดูลซีลีเนียมและเบราว์เซอร์ Firefox แล้ว เมื่อใดก็ตามที่ฉันพยายามเรียกใช้ฟังก์ชั่น webdriver ฉันจะได้รับสิ่งนี้: from selenium import webdriver browser = webdriver.Firefox() ข้อยกเว้น: - Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>> Traceback (most recent call last): File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__ self.stop() File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", …

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

3
เบราว์เซอร์ที่ไม่มีหัวและการขูด - โซลูชัน [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังพยายามใส่รายการโซลูชันที่เป็นไปได้สำหรับชุดการทดสอบอัตโนมัติของเบราว์เซอร์และแพลตฟอร์มเบราว์เซอร์ที่ไม่มีหัวที่สามารถคัดลอกได้ การทดสอบ / การเรียกดูเบราว์เซอร์: Selenium - ธงหลายภาษาในการทำงานอัตโนมัติของเบราว์เซอร์การเชื่อมโยงสำหรับ Python, Ruby, JavaScript, C #, Haskell และอื่น ๆ , IDE สำหรับ Firefox (เป็นส่วนเสริม) สำหรับการทดสอบที่รวดเร็วขึ้น สามารถทำหน้าที่เป็นเซิร์ฟเวอร์และมีคุณสมบัติมากมาย JAVASCRIPT PhantomJS - JavaScriptทดสอบหัวขาดกับการจับภาพหน้าจอและระบบอัตโนมัติที่ใช้Webkit เป็นเวอร์ชั่น 1.8 ของ WebDriver API ของ Selenium ถูกนำมาใช้ดังนั้นคุณสามารถใช้การผูก WebDriver ใด ๆ และการทดสอบจะเข้ากันได้กับ Selenium SlimerJS - …

18
เว็บไซต์สามารถตรวจจับได้เมื่อคุณใช้ซีลีเนียมกับ Chromedriver หรือไม่
ฉันได้ทดลองซีลีเนียมด้วย Chromedriver แล้วและพบว่าบางหน้าสามารถตรวจจับได้ว่าคุณกำลังใช้ซีลีเนียมแม้ว่าจะไม่มีระบบอัตโนมัติเลย แม้กระทั่งตอนที่ฉันค้นหาด้วยตนเองเพียงแค่ใช้โครเมี่ยมผ่าน Selenium และ Xephyr ฉันมักจะได้รับหน้าที่แจ้งว่ามีการตรวจพบกิจกรรมที่น่าสงสัย ฉันได้ตรวจสอบตัวแทนผู้ใช้ของฉันและลายนิ้วมือเบราว์เซอร์ของฉันและพวกเขาทั้งหมดเหมือนกับเบราว์เซอร์โครมทั่วไป เมื่อฉันเรียกดูไซต์เหล่านี้ด้วย Chrome ปกติทุกอย่างทำงานได้ดี แต่ช่วงเวลาที่ฉันใช้ซีลีเนียมที่ฉันตรวจพบ ในทางทฤษฎีแล้ว Chromedriver และ Chrome ควรมีลักษณะเหมือนกันทุกประการกับเว็บเซิร์ฟเวอร์ แต่อย่างใดพวกมันสามารถตรวจจับได้ หากคุณต้องการรหัสทดสอบลองทำสิ่งนี้: from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=1, size=(1600, 902)) display.start() chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--disable-extensions') chrome_options.add_argument('--profile-directory=Default') chrome_options.add_argument("--incognito") chrome_options.add_argument("--disable-plugins-discovery"); chrome_options.add_argument("--start-maximized") driver = webdriver.Chrome(chrome_options=chrome_options) driver.delete_all_cookies() driver.set_window_size(800,800) driver.set_window_position(0,0) print 'arguments …

29
พิมพ์คีย์ Enter / Return โดยใช้ Python และ Selenium หรือไม่
ฉันกำลังมองหาวิธีที่รวดเร็วในการพิมพ์และป้อนหรือส่งคืนคีย์ในซีลีเนียม น่าเสียดายที่แบบฟอร์มที่ฉันพยายามทดสอบ (ไม่ใช่รหัสของฉันเองดังนั้นฉันจึงไม่สามารถแก้ไขได้) ไม่มีปุ่มส่ง เมื่อทำงานร่วมกับมันด้วยตนเองผมเพียงแค่พิมพ์หรือENTER RETURNฉันจำเป็นต้องรู้วิธีการทำเช่นนั้นด้วยtypeคำสั่งSelenium เนื่องจากไม่มีปุ่มให้คลิก

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 ที่เหมาะกับความต้องการของฉัน



30
เลื่อนองค์ประกอบเข้าสู่มุมมองด้วยซีลีเนียม
มีวิธีใดในซีลีเนียม 1.x หรือ 2.x เพื่อเลื่อนหน้าต่างเบราว์เซอร์เพื่อให้องค์ประกอบเฉพาะที่ระบุโดย XPath อยู่ในมุมมองของเบราว์เซอร์ มีวิธีการโฟกัสในซีลีเนียม แต่ดูเหมือนจะไม่เลื่อนภาพใน FireFox ใครบ้างมีคำแนะนำเกี่ยวกับวิธีการทำเช่นนี้? เหตุผลที่ฉันต้องการสิ่งนี้คือฉันกำลังทดสอบการคลิกองค์ประกอบบนหน้าเว็บ น่าเสียดายที่เหตุการณ์ดูเหมือนจะไม่ทำงานจนกว่าองค์ประกอบจะปรากฏ ฉันไม่สามารถควบคุมโค้ดที่จะยิงเมื่อมีการคลิกองค์ประกอบดังนั้นฉันจึงไม่สามารถดีบักหรือทำการแก้ไขได้ดังนั้นวิธีที่ง่ายที่สุดคือการเลื่อนรายการลงในมุมมอง

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(...)แต่ไม่ได้ผล

10
รอจนกว่าหน้าโหลดด้วย Selenium WebDriver สำหรับ Python
ฉันต้องการขูดข้อมูลทั้งหมดของหน้าเว็บที่นำมาใช้โดยการเลื่อนแบบไม่มีที่สิ้นสุด รหัสหลามต่อไปนี้ใช้งานได้ for i in range(100): driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(5) ซึ่งหมายความว่าทุกครั้งที่ฉันเลื่อนลงไปด้านล่างฉันต้องรอ 5 วินาทีซึ่งโดยทั่วไปจะเพียงพอสำหรับหน้าเพื่อโหลดเนื้อหาที่สร้างขึ้นใหม่ให้เสร็จ แต่นี่อาจไม่ได้ผลเวลา หน้าอาจโหลดเนื้อหาใหม่ภายใน 5 วินาที ฉันจะตรวจสอบได้อย่างไรว่าหน้าโหลดเนื้อหาใหม่ทุกครั้งที่เลื่อนลงหรือไม่ หากฉันสามารถตรวจจับสิ่งนี้ได้ฉันสามารถเลื่อนลงมาอีกครั้งเพื่อดูเนื้อหาเพิ่มเติมเมื่อฉันรู้ว่าเพจโหลดเสร็จแล้ว นี่คือเวลาที่มีประสิทธิภาพมากขึ้น

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