我想运行Firefox无头使用Selenium WebDriver在Python。
关键是转到一个页面,等待JavaScript加载,并收集该页面上的所有链接。
为了开始测试,我编写了以下代码:
import time
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument("--headless")
url = "http://localhost:3000/"
driver = webdriver.Firefox(firefox_options=options)
driver.get(url)
time.sleep(5)
urls = driver.find_elements_by_tag_name('a')
print(urls)
driver.quit()
这总是给出以下错误:
Traceback (most recent call last):
File "sel.py", line 18, in <module>
urls = driver.find_elements_by_tag_name('a')
File "/home/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 545, in find_elements_by_tag_name
return self.find_elements(by=By.TAG_NAME, value=name)
File "/home/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 995, in find_elements
'value': value})['value'] or []
File "/home/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 318, in execute
response = self.command_executor.execute(driver_command, params)
File "/home/petra/.local/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 472, in execute
return self._request(command_info[0], url, body=data)
File "/home/petra/.local/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 496, in _request
resp = self._conn.getresponse()
File "/usr/lib/python2.7/httplib.py", line 1136, in getresponse
response.begin()
File "/usr/lib/python2.7/httplib.py", line 453, in begin
version, status, reason = self._read_status()
File "/usr/lib/python2.7/httplib.py", line 417, in _read_status
raise BadStatusLine(line)
httplib.BadStatusLine: ''
我试着删除这行time.sleep(5)
,因为我认为这可能是个问题。
现在print(urls)
返回以下内容:
[<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="27257d43-81ec-48e4-9ed2-55709a23d60f", element="e728d5ef-001f-4335-bd57-19a1f2d82683")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="27257d43-81ec-48e4-9ed2-55709a23d60f", element="2c59c828-8557-48cc-a79a-02ea3c9d2d65")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="27257d43-81ec-48e4-9ed2-55709a23d60f", element="e2058a00-9bad-4f0c-8e2d-a236a567dddd")>]
如果我输入时间,就会出现这个输出。睡眠(0)
直到时间。睡眠(4)
。
不管怎样,这都不是我想要的结果;我想看看我页面上的所有锚。
我做错了什么?
对不起,我是新手。
请尝试以下代码:
from selenium.webdriver.support import ui
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
urls = ui.WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.TAG_NAME, "a")))
for url in urls:
print(url.get_attribute("href"))
# Another example of printing URLs (where actual_urls is a list of anchors).
actual_urls = [url.get_attribute("href") for url in urls]
print(actual_urls)
希望有帮助!
我用Java编写了一个程序,我有以下问题: 在课程的后期,我再次需要这些学生。我可以这样做: 但是我没有学生的人数。有没有办法让他们的名字,这是在类学生?
问题内容: 这应该很简单,但我只是没有看到。 如果我有一个进程ID,该如何使用它来获取有关该进程的信息,例如进程名称。 问题答案: 在Linux下,您可以读取proc文件系统。文件包含命令行。
问题内容: 我正在使用PHPDOM,并且试图在DOM节点中获取具有给定类名的元素。获得该子元素的最佳方法是什么? 更新: 我最终使用了PHP,它更容易使用。 问题答案: 更新:CSS选择器的Xpath版本 因此,在下面我回应hakre的评论之后,我感到好奇,并调查了后面的代码。看起来上面的选择器已编译为以下xpath(未经测试): 所以PHP将是: 基本上,我们在这里所做的就是规范化属性,以便即使
问题内容: 我想知道是否有一种功能或某种与之等效的方法。 问题答案: 您的函数名称中缺少。返回元素的集合,这些元素需要迭代: IE8及以下版本不支持,因此您必须找到一个polyfill或使用(IE8)。
问题内容: 使用JavaScript,我们可以使用以下语法通过id获取元素: 我尝试以下按类获取元素: 但这导致了错误: 如何按类获取元素? 问题答案: DOM函数的名称实际上不是,仅仅是因为页面上的多个元素可以具有同一类,因此:。 此方法的返回值将是NodeList实例,或者是(FF的超集,例如返回的实例)。无论如何:返回值是一个类似于数组的对象: 如果由于某种原因需要返回对象作为数组,则由于其
问题内容: 有没有简单的方法来获取标签名称? 例如,如果给我一个函数,我想得到。 问题答案: 您可以致电。例子: 如果写出来很麻烦,则可以创建一个自定义函数,如下所示: 例子: 请注意,按照惯例,标签名称返回 CAPITALIZED 。如果希望返回的标签名称全部为小写字母,则可以编辑自定义函数,如下所示: 例子: