簡體   English   中英

Python + Selenium代碼在Chrome中工作正常,但在Firefox中工作不正常

[英]Python+selenium code works fine in Chrome, but not in Firefox

我用Python 2.7編寫了一個硒控制的網頁解析器。 它在Chrome瀏覽器(v64)中可以正常工作並完成工作。 但是,在Firefox(v58)中,網頁可以很好地打開,但是隨后代碼在find_element_by_name的第一個實例處生成錯誤。

我收到以下錯誤

Traceback (most recent call last):
  File "generate_fastener list.py", line 13, in <module>
    elem = br.find_element_by_name("userId")
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 487, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 955, in find_element
    'value': value})['value']
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 241, in check_response
    raise exception_class(message, screen, stacktrace, alert_text)
selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None
Message:

代碼的前幾行如下:

 import urllib
 import os
 import time
 import fileinput
 from selenium import webdriver
 from selenium.webdriver.common.keys import Keys
 from selenium.webdriver.support.ui import Select
 from selenium.webdriver.common.by import By
 from formatFilename import formatFilename

 br = webdriver.Firefox()
 br.get("some_url")
 elem = br.find_element_by_name("userId")
 elem.clear()
 elem.send_keys("myname")

當我嘗試查找表單元素“ userId”時發生錯誤。 我已經將geckodriver放在/usr/local/bin文件夾中。

我在您的代碼塊中看不到任何此類問題。 這似乎是一個同步問題。 一種可能的解決方案將是,以誘導與WebDriverWait expected_conditions子句element_to_be_clickable使用任一的下列選項:

  • 使用XPATH:

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@name='userId']"))).send_keys("myname") 
  • 使用CSS_SELECTOR:

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[name*='userId']"))).send_keys("myname") 

更新資料

您將需要以下導入

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

暫無
暫無

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

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