如何在python3中自行设置page_source的硒?

时间:2019-01-05 03:11:44

标签: python html selenium

我正在使用硒编写应用程序。我知道您可以使用webdriver.Firefox的{​​{1}}方法来获取网页,如下所示:

get

但是,我不想打开网页并从那里获取资源,而是想自己提供这样的资源:

    driver = webdriver.Firefox(executable_path=r'geckodriver')
    driver.get('file://' + os.path.dirname(os.path.abspath(__file__)) + '/index.html')
    driver.page_source # get the source

然后能够执行常规的硒操作,例如:

    driver.page_source = '<body><h1>Hello</h1></body>'

但是由于 driver.find_element_by_tag_name('<h1>') Firefox.page_source,所以我不能手动设置它。有谁知道解决这个问题的方法?任何建议将不胜感激。

2 个答案:

答案 0 :(得分:4)

您可以使用数据网址打开该网址,并以data:方案开头

htmlString = '<body><h1>Hello</h1></body>'
driver.get("data:text/html;charset=utf-8," + htmlString);
h1 = driver.find_element_by_tag_name('h1')
print(h1.text)

长度限制:65535个字符

或者没有长度限制,您可以使用javascript方法execute_script()

附加字符串
htmlString = '<html><body></body></html>'
driver.get("data:text/html;charset=utf-8," + htmlString);
largeHTMLString = '<h1>Hello</h1>'
driver.execute_script('document.body.innerHTML=arguments[0]', largeHTMLString)
h1 = driver.find_element_by_tag_name('h1')
print(h1.text)

答案 1 :(得分:0)

如果您不介意解析漂亮的汤,这就是我要解决的问题:

isAuthenticated

希望有帮助。