python - Selenium...程序适用于 Firefox,但不适用于 Chrome

标签 python google-chrome selenium selenium-webdriver

下面的代码在 Firefox 中运行良好,但是当我设置 browser=webdriver.Chrome() 时,我遇到了一些问题。

browser = webdriver.Firefox()
browser.get('https://www.voilanorbert.com/')
inputElement = browser.find_element_by_id("form-search-name")
inputElement.send_keys(leadslist[i][0])
inputElement = browser.find_element_by_id("form-search-domain")
inputElement.send_keys(leadslist[i][1])
searchbutton = browser.find_element_by_name("search")
searchbutton.click()

wait = WebDriverWait(browser, 20)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.results")))
h3s = browser.find_elements_by_css_selector('h3.one')
h3 = next(element for element in h3s if element.is_displayed())
result = h3.text

使用 chrome,一切都很好,直到我需要提取文本。我收到此错误:

h3 = next(element for element in h3s if element.is_displayed())
StopIteration

编辑
在 Firefox 和 Chrome 上再次出现问题。我什至添加了流畅的等待。

wait = WebDriverWait(browser, 20)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.results")))
wait2 = WebDriverWait(browser, 3000, poll_frequency=100, ignored_exceptions=[ElementNotVisibleException])
wait2.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "h3.one")))
h3s = browser.find_elements_by_css_selector('h3.one')
h3 = next(element for element in h3s if element.is_displayed())
result = h3.text

我得出的结论是,selenium 绝对不是完美的。

最佳答案

我怀疑这里的关键问题在于显示结果时发生的动画

您需要让 selenium 知道您希望它通过 implicitly_wait() 在搜索元素之前等待 :

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.results")))

# okay, selenium, slow down, please
browser.implicitly_wait(3)
h3s = browser.find_elements_by_css_selector('h3.one')

(为我工作)

关于python - Selenium...程序适用于 Firefox,但不适用于 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29354709/

相关文章:

python - Plotly:如何为每个不同的子图应用不同的标题?

Python - 从记录值拟合指数衰减曲线

python - 尽管我的类和属性似乎设置正确,但在 Python : Why AttributeError, 中练习继承?

google-chrome - 为什么通过用户脚本设置自动完成 ="on"仍然不允许在 Chrome 中存储密码?

c# - Selenium C# 中的 headless (headless) Firefox

java - 如何使用 Selenium 关注文件对话框来选择文件

python - 将图像上传到 s3 后,上传随附的缩略图

javascript - Chrome 和 IE 返回不同的 SHA 哈希值

node.js - 检测 Google Chrome 页面预取

java - FirefoxDriver 不启动任何 URL 并执行任何操作