Selenium ... Program Works适用于Firefox,但不适用于Chrome [英] Selenium...Program Works Fine for Firefox, but not Chrome

查看:173
本文介绍了Selenium ... Program Works适用于Firefox,但不适用于Chrome的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面的代码适用于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])$ ​​b $ b 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(元素在h3s中的元素if element.is_displayed())
结果= h3.text

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

  h3 = next(元素在h3s中的元素,如果element.is_displayed())
StopIteration

编辑

问题再次出现火狐和铬。

  wait = WebDriverWait(browser,20)
wait.until(EC.visibility_of_element_located ((By.CSS_SELECTOR,div.results)))
wait2 = WebDriverWait(browser,3000,po​​ll_frequency = 100,ignored_exceptions = [ElementNotVisibleException])
wait2.until(EC.presence_of_all_elements_located .CSS_SELECTOR,h3.one)))
h3s = browser.find_elements_by_css_selector('h3.one')
h3 = next(元素在h3s元素,如果element.is_displayed())
结果= h3.text

我得出结论,硒绝对不是完美的。如果这是一个等待问题,我已经有了很好的流利等待经验:
$ b $
b

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


The code below works fine with Firefox, but when I set browser=webdriver.Chrome() I get some issues.

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

With chrome, everything is fine up until I need to extract text. I get this error:

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

EDIT
Problem showing up again on both firefox and chrome. I even added a fluent wait.

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

I have came to the conclusion that selenium is definitely not perfect.

解决方案

If it is a wait issue I've had good experience with fluent wait:

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

这篇关于Selenium ... Program Works适用于Firefox,但不适用于Chrome的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆