2013-05-29 32 views
11

Sử dụng phiên bản Python của Selenium, bạn có thể nhấp vào một số phần tử trong DOM và chỉ định tọa độ nơi bạn muốn nhấp vào không? Phiên bản Java có phương thức clickAt, thực sự thực hiện chính xác những gì tôi đang tìm kiếm, nhưng không thể tìm thấy tương đương trong Python.Selenium - Nhấp vào vị trí nhất định

Trả lời

1

Tôi đã không trực tiếp sử dụng phương pháp này, nhưng nhìn qua mã nguồn của selenium.py Tôi đã tìm thấy những phương pháp sau đây mà hình như họ muốn làm những gì bạn muốn - Họ tìm đến quấn clickAt:

def click_at(self,locator,coordString): 
    """ 
    Clicks on a link, button, checkbox or radio button. If the click action 
    causes a new page to load (like a link usually does), call 
    waitForPageToLoad. 

    'locator' is an element locator 
    'coordString' is specifies the x,y position (i.e. - 10,20) of the mouse  event relative to the element returned by the locator. 
    """ 
    self.do_command("clickAt", [locator,coordString,]) 


def double_click_at(self,locator,coordString): 
    """ 
    Doubleclicks on a link, button, checkbox or radio button. If the action 
    causes a new page to load (like a link usually does), call 
    waitForPageToLoad. 

    'locator' is an element locator 
    'coordString' is specifies the x,y position (i.e. - 10,20) of the mouse  event relative to the element returned by the locator. 
    """ 
    self.do_command("doubleClickAt", [locator,coordString,]) 

Chúng xuất hiện trong đối tượng selen và đây là online API documentation của chúng.

+0

Tuyệt vời !! Họ thuộc lớp nào? – davids

+0

Chúng nằm trong đối tượng selen. Tôi đã thực sự chỉ tìm thấy tài liệu API của họ trực tuyến - cập nhật câu trả lời. – Ewan

+0

Chỉ còn một câu hỏi nữa. Làm thế nào để bạn thực sự sử dụng điều này? Tôi đã từng làm việc với các đối tượng webdrivers, nhưng không bao giờ sử dụng nó – davids

4

Lý do bạn bị nhầm lẫn là clickAt là phương thức v1 (Selenium RC) cũ.

WebDriver có khái niệm hơi khác, là 'Actions'.

Cụ thể, trình tạo 'Hành động' cho các ràng buộc Python trực tiếp here.

Ý tưởng lệnh clickAt là nhấp vào một vị trí nhất định tương đối cho một phần tử cụ thể.

Điều tương tự cũng có thể đạt được trong WebDriver, sử dụng trình tạo 'Tác vụ'.

Hy vọng điều này updated documentation có thể hữu ích.

22

Điều này sẽ làm điều đó! Cụ thể là bạn cần phải sử dụng chuỗi hành động từ webdriver. Một khi bạn có một ví dụ về điều đó, bạn chỉ cần đăng ký một loạt các hành động và sau đó gọi perform() để thực hiện chúng.

from selenium import webdriver 
driver = webdriver.Firefox() 
driver.get("http://www.google.com") 
el=driver.find_elements_by_xpath("//button[contains(string(), 'Lucky')]")[0] 

action = webdriver.common.action_chains.ActionChains(driver) 
action.move_to_element_with_offset(el, 5, 5) 
action.click() 
action.perform() 

này sẽ di chuyển con chuột 5 pixel xuống và 5 pixel ngay từ góc trên bên trái của nút Tôi cảm thấy may mắn. Sau đó, nó sẽ click().

Lưu ý rằng bạn phải sử dụng perform(). Khác không có gì sẽ xảy ra.

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