URL
我的理论是他们以某种方式阻止了硒,也许是这样?但我没有办法测试。当不使用Selenium浏览器实例(即常规浏览器)加载页面时,问题不会持续存在。下面是我的代码:
from selenium import webdriver
# requirements to wait until specific part of page is open
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException, NoSuchElementException
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--lang=en_US")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
options.add_argument("disable-infobars")
browser = webdriver.Chrome(options=options)
delay = 5
browser.get("https://shop.coles.com.au/a/alexandria/product/nutella-spread-chocolate-hazelnut-2620684p")
# this is where the page is not loading & therefore throwing ElementNotFound exception
try:
price_dollars = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.CLASS_NAME, "price-dollars")))
price_cents = browser.find_element_by_class_name("price-cents")
# converts strings into floats with decimals (to one place only)
fl_price_dollars = float(price_dollars.text)
fl_price_cents = float(price_cents.text)
fl_price_concat = fl_price_dollars + fl_price_cents*10**-2
print(type(fl_price_concat)) # check this is a float type not string
print(fl_price_concat)
except TimeoutException:
print("Timeout1")
pass
except NoSuchElementException: # need to catch all exceptions & pass to quit() or processes will continue to run
print("Element not found")
pass
browser.quit()
使用Selenium browser实例打开页面时加载的页面源代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="about:blank">
</head>
<body>
<script src="/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/j.js"></script>
<script src="/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/f.js"></script>
<script src="/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/fingerprint/script/kpf.js?url=/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/fingerprint&token=c2e6cd9a-e76e-cd51-288d-f604aea52023"></script>
</body>
</html>
编辑以下答案在2020年6月为我工作
尝试添加以下参数:options.add_argument(“--disable-blink-features=automationcontrolled”)
关键是使'Navigator.WebDriver'返回未定义。如果Chrome由Webdriver控制(由Selenium使用),则返回“true”。
如果您添加了这个参数,那么javascript调用(您可以在dev tools控制台中测试它)Navigator.WebDriver将返回'undefined',这与在普通Chrome中运行该参数相同。
但是,对于以下所有使用chromedriver的测试,浏览器都不能成功导航到URL。 浏览器启动,瞬间显示字符数据;出现在地址栏中(就像第一个测试中一样),然后将正确的URL插入到地址栏中。但是,页面永远不会加载,你得到了标准的chrome这个网页不可用的消息,在浏览器的正文/画布上有两个按钮reload和更多。 这是已知的问题吗? 以下异常将被删除: NosuchWindowException:
好的——问题似乎已经解决——请参阅下面的工作解决方案。 问题= 我查询的元素是谷歌广告部门,我想确保我们在所有平台上都提供广告。加载是异步的,所以我要确保等待页面加载。 当我从ruby shell(irb)手动驱动selenium时,我总是能够在IE版本9、10、11中找到元素。当我手动导航到浏览器堆栈的“Live”浏览器内IE仿真中的站点时也是如此。 但是——当我通过RSpec以编程方式运行与s
主要内容:1. 项目依赖文件配置,2. @Test(invocationCount =?),3. @Test(invocationCount = ? threadPoolSize = ?),4. 负载测试示例在本教程中,我们将演示如何使用属性和在网站上执行负载测试或压力测试。 使用的工具 : TestNG 6.8.7 Selenium 2.39.0 Maven 3 我们使用库自动化浏览器来访问网站。创建一个用于测试的Maven项目:TestngSelenium 。 1. 项目依赖文件配置 获取T
我有一个使用对象标签嵌入ActiveX(*. CAB文件)的网站: 但是,当通过Selenium打开网站时,ActiveX不会加载,这会阻止我测试此网站。这在使用Selenium 2.44.0 RemoteWebDriver的IE 9和IE 10中都会发生。如果浏览器不是由Selenium WebDriver初始化的,则该站点工作正常。 WebDriver是否默认禁用ActiveX加载?如何重新启
请看一下这个项目:https://github.com/darzz/boot_bug这是复制错误的最小设置。 描述:应用程序堆栈是Spring Boot,包含Spring数据和Spring批处理。有testNamedQuery。hbm。src/main/resources/querys下的xml文件。 从应用程序类运行时,批处理作业成功完成,日志中没有异常。但是,当从ApplicationNotW
我正在自动化我的github配置文件,下面是我的测试用例: null 我们如何管理TestInitialize()类,使:-browser与baseurl一起运行,直到完成所有测试。我们如何管理TestCleanup(),使:-browser只在所有测试完成后才关闭。