簡體   English   中英

Python,Selenium Webdriver:Firefox不可見該元素。

[英]Python, Selenium Webdriver: The element is not visible for Firefox.

我正在嘗試使用具有打開彈出窗口的編輯鏈接的頁面上的webelement進行迭代。 在打開的彈出窗口中,我有簡單的輸入字段和“應用/取消”按鈕。 在我的腳本中,我執行以下操作以在輸入字段中輸入一些文本:

def enter_text(self, text, action):
        if self.is_element_present(self._input_locator):
            self.selenium.find_element(*self._input_locator).send_keys(text)
        if action == 'Apply':
            self.selenium.find_element(*self._apply_button_locator).click()
        elif action == 'Cancel':
            self.selenium.find_element(*self._cancel_button_locator).click()

當我在Chrome中運行腳本時-一切正常,找到所有網絡元素,並將輸入文本輸入該字段。 但是,當我在Firefox中運行完全相同的腳本時-它會打開帶有輸入字段和2個按鈕的彈出窗口(這對於Webdriver來說是可見的),但是文本沒有輸入到該字段中會導致錯誤:

ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with' 

如果彈出窗口實際上是打開的(我可以看到),但Webdriver告訴它不可見,為什么會發生這種情況? 另外,我進行了幾次睡眠,只是為了確保加載了彈出窗口,然后輸入了文本,但這並沒有幫助。

任何幫助將不勝感激。

兩個想法:

1:確保您的HTML有效,例如通過w3c驗證程序運行它。 損壞的html是不同瀏覽器中不同行為的常見原因。

2:您是否確實使用以下方法將硒切換到了彈出窗口:

for handle in self.selenium.window_handles:
    # identify popup window's handle somehow
    self.selenium.switch_to_window(handle)

順便說一句,如果您還沒有遇到selenium.implicitly_wait(3) ,那么它對於避免time.sleep和wait-for構造是一種非常有用的方法。

您使用的是Witch Firefox版本還是Webdriver版本?

請嘗試以下操作:

  • 將Webdriver更新到最新版本
  • 如果您使用的是firefox 17-18,請將其降級至較低版本(我想FF12可以使用)

請嘗試並告訴我會發生什么,

問候

暫無
暫無

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

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