[英]Python selenium tab feature works fine in Firefox but not in Chrome
[英]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.