【问题标题】:Selenium...Program Works Fine for Firefox, but not ChromeSelenium...程序适用于 Firefox,但不适用于 Chrome
【发布时间】:2015-03-30 19:34:27
【问题描述】:

下面的代码在 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

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

【问题讨论】:

  • h3s 是如何定义的?
  • 编辑显示。只是忘了发布那条线。

标签: python google-chrome selenium selenium-webdriver


【解决方案1】:

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

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

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')

(为我工作)

【讨论】:

  • 这也行得通...(一旦我将等待时间更改为更长一点,10 秒)
  • 所以它不适用于 chrome 或 firefox。即使添加了流畅的等待,我也会遇到同样的错误:
【解决方案2】:

如果是等待问题,我在流畅等待方面有很好的经验:

https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/ui/FluentWait.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 2014-11-17
    • 2015-06-09
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多