Selenium…这个程序对Firefox很好,但Chrom不行

2024-05-16 00:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码可以在Firefox上运行,但是当我设置browser时=网络驱动程序.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,一切都很好,直到我需要提取文本。我得到这个错误:

^{pr2}$

编辑
在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

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


Tags: ofbrowsersearchbyelementfindh3until
2条回答

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

您需要让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')

(为我工作)

相关问题 更多 >