from selenium import webdriver
from selenium.webdriver.firefox.options import Options
firefox_binary = '/usr/bin/firefox'
options = Options()
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities().FIREFOX
# caps["pageLoadStrategy"] = "normal" # complete
caps["pageLoadStrategy"] = "eager" # interactive
injected_javascript=("Object.defineProperty(navigator, 'webdriver', { value: 'false' })")
driver = webdriver.Firefox(executable_path=r'/home/kkkk/ggecko/geckodriver', firefox_binary=firefox_binary)
driver.get('https://auth.citromail.hu/regisztracio/')
driver.execute_async_script(injected_javascript)
Traceback (most recent call last):
File "/home/kkkk/driverr.py", line 14, in <module>
driver.execute_async_script(injected_javascript)
File "/home/kkkk/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 652, in execute_async_script
'args': converted_args})['value']
File "/home/kkkk/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 314, in execute
self.error_handler.check_response(response)
File "/home/kkkk/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: Timed out
import os
from selenium import webdriver
options=webdriver.FirefoxOptions()
options.set_headless(True)
driver=webdriver.Firefox(options=options)
# solution found here https://stackoverflow.com/questions/17385779/how-do-i-load-a-javascript-file-into-the-dom-using-selenium
driver.execute_script("var s=window.document.createElement('script'); s.src='javascriptFirefox.js';window.document.head.appendChild(s);")
driver.get('https://auth.citromail.hu/regisztracio/')
// overwrite the `languages` property to use a custom getter
const setProperty = () => {
Object.defineProperty(navigator, "languages", {
get: function() {
return ["en-US", "en", "es"];
}
});
// Overwrite the `plugins` property to use a custom getter.
Object.defineProperty(navigator, 'plugins', {
get: () => [1, 2, 3, 4, 5],
});
// Pass the Webdriver test
Object.defineProperty(navigator, 'webdriver', {
get: () => false,
});
callback();
};
setProperty();
问题内容: 我有这个元素: 我要做的就是在我的网页上进行更改。 可能吗? 问题答案: 试试这个:
问题内容: 我想知道是否有可能在不进行内联样式的情况下修改Css样式表声明。 这是一个简单的例子: 这给出了一个蓝色的书写框,在悬停时变为绿色。 如果我为颜色提供内联样式,则悬停行为将丢失: 无论如何,这都会显示一个红色的书写框。 所以我的问题是,如何能访问和修改css声明对象,而不是用内联样式覆盖样式。 谢谢, 问题答案: 您可以使用与原始样式表相对应的DOM样式表对象上的来修改规则。 请注意,
问题内容: 在express.js中,我想在请求对象上为我的每个URI侦听器提供一个附加属性。这将提供协议,主机名和端口号。例如: 我当然可以连接req.protocol,req.host,并以某种方式绕过我的每个URI侦听器的端口号(似乎是req对象中缺少的端口号),但是我希望能够在其中进行他们所有人都可以访问此信息的方式。 此外,主机名在请求之间可能会有所不同(计算机具有多个接口),因此在启动
事务中的持久实例(就是通过 session 装载、保存、创建或者查询出的对象) 被应用程序操作所造成的任何修改都会在 Session 被刷出(flushed)的时候被持久化(本章后面会详细讨论)。这里不需要调用某个特定的方法(比如 update(),设计它的目的是不同的)将你的修改持久化。所以最直接的更新一个对象的方法就是在 Session 处于打开状态时 load() 它,然后直接修改即可: D
问题内容: 我正在尝试使用selenium和铬在网站中自动化一个非常基本的任务,但是以某种方式网站会检测到铬是由selenium驱动的,并阻止每个请求。我怀疑该网站是否依赖像这样的公开DOM变量来检测selenium驱动的浏览器。 我的问题是,有没有办法使navigator.webdriver标志为假?我愿意尝试修改后重新尝试编译selenium源,但似乎无法在存储库中的任何地方找到Navigat
但它只在初始页加载后更新属性。我认为站点在我的脚本执行之前检测到了变量。