簡體   English   中英

如何使用硒Webdriver根據元素的坐標單擊元素

[英]How to click on an element based on its coordinates with selenium webdriver

因此,我們正在開發的Web應用程序具有TV / PC模式,並且我正在測試在這兩種模式之間進行轉換的能力。 `

 def pc_to_tv(self):
        pc_to_tv = self.driver.find_element_by_xpath(
            'html/body/div[1]/div/topbar/header/div[2]/div[2]/div[1]/button[1]')
        pc_to_tv.click()

 def tv_to_pc(self):
      tv_to_pc = self.driver.find_element_by_xpath(
            'html/body/div[1]/div/topbar/header/div[2]/div[2]/div[1]/button[2]')
      tv_to_pc.click()`

問題是,當我從PC切換到電視時,屏幕“放大”,使按鈕出現在沒有縮放的位置。 因此,我無法使用“ tv_to_pc”方法單擊按鈕,“原因是單擊實際按鈕時,它將單擊按鈕應位於的位置。

因此,我找到的解決方案是單擊帶有坐標的按鈕,這樣,我實際上將單擊我想要的位置,而不是像我一樣單擊不可單擊的位置。

問題是,我不知道該怎么做,因此需要幫助。

我建議您使用JavaScriptExecutor單擊按鈕。 無論它在頁面上的什么位置,它都會單擊它。 有關更多信息,請參見如何在Python網絡驅動程序中執行javascript和其他問題。 通用格式為

element = driver.find_element_by_id("someId") 
driver.execute_script("arguments[0].click();", element)

另外...您不想使用這樣的XPath。 任何始於HTML標記或深度超過幾個級別的XPath都將非常脆弱。 在selenium xpaths上進行一些谷歌搜索,並閱讀一些指南以獲取更多信息。

嘗試moveToElement然后執行單擊

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
new Actions(driver).moveToElement(element, x, y).click().perform();

x是xoffset y是yoffset

請注意,如果您使用Javascript進行點擊,則它不會是原生點擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM