2011-12-25 41 views
14

Tôi đang xoá một trang web bằng cách sử dụng trình quản trị web Selenium trong PythonNhấp vào cửa sổ bật lên javascript qua webdriver

Trang web tôi đang làm việc, có biểu mẫu. Tôi có thể điền vào biểu mẫu và sau đó tôi nhấp vào nút Gửi.

Tạo cửa sổ bật lên (Cảnh báo Javascript). Tôi không chắc chắn, làm thế nào để nhấp vào popup thông qua webdriver.

Bất kỳ ý tưởng nào về cách thực hiện?

Cảm ơn

+0

Xem http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_Does_WebDriver_support_Javascript_alerts_and_prompts?Nó không phải Python, nhưng tôi nghĩ nó khá dễ hiểu. – rubik

+0

Ya. Nhưng nó không hoạt động với Python. Tôi đã không thể tìm thấy một hàm tương đương để xử lý cửa sổ bật lên. – Kiran

+0

bản sao có thể có của [Cách nhấp và xác minh sự tồn tại của cửa sổ bật lên (cảnh báo)] (http://stackoverflow.com/questions/3084850/how-to-click-and-verify-the-existence-of-a -pop-up-alert) – Acorn

Trả lời

0

điều đó phụ thuộc vào chức năng javascript để xử lý việc nộp hình thức nếu không có chức năng như vậy cố gắng gửi biểu mẫu sử dụng bài

+0

Tôi nhận được thông báo javascript đơn giản nói "Cảm ơn bạn đã gửi", tôi chỉ muốn nhấn enter để đóng cửa sổ bật lên. – Kiran

1

Tôi đang sử dụng Ruby bindings nhưng ở đây những gì tôi tìm thấy trong Selenium Python Tài liệu Bindings 2: http://readthedocs.org/docs/selenium-python/en/latest/index.html

Selenium WebDriver có hỗ trợ sẵn để xử lý hộp thoại bật lên. Sau khi bạn đã triggerd và hành động mà sẽ mở ra một cửa sổ bật lên, bạn có thể truy cập vào các cảnh báo như sau:

alert = driver.switch_to_alert() 

Bây giờ tôi đoán bạn có thể làm điều gì đó như thế:

if alert.text == 'A value you are looking for' 
    alert.dismiss 
else 
    alert.accept 
end 

Hy vọng nó sẽ giúp!

19

Python Webdriver Script:

from selenium import webdriver 

browser = webdriver.Firefox() 
browser.get("http://sandbox.dev/alert.html") 
alert = browser.switch_to_alert() 
alert.accept() 
browser.close() 

trang web (alert.html):

<html><body> 
    <script>alert("hey");</script> 
</body></html> 

Chạy kịch bản webdriver sẽ mở ra trang HTML cho thấy một cảnh báo. Webdriver ngay lập tức chuyển sang cảnh báo và chấp nhận nó. Trình quản lý web sau đó đóng trình duyệt và kết thúc.

Nếu bạn không chắc chắn sẽ có một cảnh báo thì bạn cần phải nắm bắt lỗi với một cái gì đó như thế này.

from selenium import webdriver 

browser = webdriver.Firefox() 
browser.get("http://sandbox.dev/no-alert.html") 

try: 
    alert = browser.switch_to_alert() 
    alert.accept() 
except: 
    print "no alert to accept" 
browser.close() 

Nếu bạn cần phải kiểm tra nội dung của cảnh báo, bạn có thể nhận được văn bản của các cảnh báo bằng cách truy cập các thuộc tính văn bản của đối tượng cảnh báo:

from selenium import webdriver 

browser = webdriver.Firefox() 
browser.get("http://sandbox.dev/alert.html") 

try: 
    alert = browser.switch_to_alert() 
    print alert.text 
    alert.accept() 
except: 
    print "no alert to accept" 
browser.close() 
+1

switch_to_alert() hiện không được chấp nhận trong các ràng buộc mới nhất của Selenium Python v 2.46.0. Sử dụng driver.switch_to.alert để thay thế. Nguồn: http://selenium-python.readthedocs.org/en/latest/api.html – SpartaSixZero

1

Nếu bạn muốn Chấp nhận hoặc Click vào popup, bất kể nó là gì rồi

alert.accept 

đâu alert là đối tượng của lớp selenium.webdriver.common.alert.Alert(driver)accept là phương pháp của đối tượng đó

Source

4
from selenium import webdriver 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Firefox() 
#do something 
if EC.alert_is_present: 
    print "Alert Exists" 
    driver.switch_to_alert().accept() 
    print "Alert accepted" 
else: 
    print "No alert exists" 

Thông tin thêm về excepted_conditions https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.expected_conditions.html

+0

Chỉ cần một FYI, switch_to_alert() hiện không còn được dùng nữa và đã được thay thế bằng switch_to.alert http: // selenium-python. readthedocs.org/en/latest/api.html#selenium.webdriver.remote.webdriver.WebDriver.switch_to_alert – demouser123

+0

@bad_deadpool cảm ơn bạn đã cập nhật! cũng: liên kết đó là 404 - tài liệu đó hiện có tại http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.switch_to_alert –

+0

Cảm ơn @GregSadetsky về các bản cập nhật. –

Các vấn đề liên quan