你如何使Selenium 2.0等待页面加载?
我有一个用Selenium测试的Web应用程序.页面加载时会运行很多JavaScript.
这段JavaScript代码编写得不是很好,但我无法改变任何东西.所以等待元素出现在DOM中的findElement()方法不是一种选择.
我想在Java中创建一个通用函数来等待页面加载,可能的解决方案是:
document.body.innerHTML在字符串变量中body.body变量与之前版本进行比较body.如果它们相同则设置增量计数器,notChangedCount否则设置notChangedCount为零.notChangedCount >= 10那么退出循环,否则循环到第一步.你认为这是一个有效的解决方案吗?
以下是我的代码:
case BrowserType.PhantomJS:
var service = PhantomJSDriverService.CreateDefaultService(Path.Combine(_rootPath, @"Packages\"));
var cookieFilePath=Path.Combine(_rootPath, @"Packages\cookie.txt");
if (!File.Exists(cookieFilePath))
File.Create(cookieFilePath);
var phantomjsoptions = new PhantomJSOptions();
driver = new PhantomJSDriver(service,phantomjsoptions);
var cookieJar = driver.Manage().Cookies;
driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);
cookieJar.AddCookie(new Cookie("x", "12345"));
return driver;
Run Code Online (Sandbox Code Playgroud)
基本上问题是我无法登录我的测试应用程序因为我收到错误说 -
"您的浏览器设置为阻止Cookie"
我已经尝试了一切,但我似乎无法得到解决方案.
我该怎么办?
请帮帮我.
如果遗漏了一些细节,请告诉我.
我正在编写一些Java Webdriver代码来自动化我的应用程序.如何正确检查页面是否已加载?该应用程序也有一些Ajax调用.
我已经声明了WebDriver的隐式等待.
我使用Python3和Selenium firefox提交表单,然后获取他们随后登陆的URL.我是这样做的
inputElement.send_keys(postnumber)
inputElement.submit()
time.sleep(5)
# Get Current URL
current_url = driver.current_url
print ( " URL : %s" % current_url )
Run Code Online (Sandbox Code Playgroud)
这大部分时间都在工作,但有时页面加载时间超过5秒,我得到旧URL,因为新的URL还没有加载.
我该怎么做?
我正在努力自动化一个网站,该网站有许多通过JS事件加载新页面的链接.基本上,有些元素是可点击的,点击一个元素会导致一些JavaScript运行,这会导致表单被提交并路由到新页面.
现在,如果这些只是标准的HTML链接,那就没有问题,因为Selenium非常聪明,可以告诉他们有一个新页面即将来临并等待做事.但是,尽管如此,Selenium无法分辨出这个实例中的点击是否会导致新页面加载,因此它不会等待并且继续前进.因此它不会等待新页面,尝试查找不存在的元素,我的测试都会失败.游民.
作为临时解决方案,我只是将程序暂停三秒钟,如下所示:
oldPageDriver.clickThatButton();
try {
Thread.sleep(3000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
newPageDriver = new NewPageDriver(driver);
newPageDriver.doStuffOnNewPage();
Run Code Online (Sandbox Code Playgroud)
这有点工作.我不喜欢它,因为它是"hacky",只是打断程序而不是做一些更聪明的事情.因为延迟是在三秒钟硬编码,所以如果链接工作但是速度慢,我会失败.我已经考虑过类似于隐式等待的东西,但它完成了同样的事情,并且在经过大量研究后,我在Java中找不到可靠,可行的答案.
那么,任何人都可以建议解决这个问题吗?具体来说,如何让Selenium知道一个新的页面,并等到它可用?
我在 Java 中使用 selenium。我想在该页面上执行任何操作之前等待页面完全加载。
我尝试了以下方法,但未能按预期工作。
public void waitForElementToBeVisible(final WebElement element) {
WebDriverWait wait = new WebDriverWait(WebDriverFactory.getWebDriver(), WEBDRIVER_PAUSE_TIME);
wait.until(ExpectedConditions.visibilityOf(element));
Run Code Online (Sandbox Code Playgroud) 单击元素后,如何使用硒查找当前URL。我有这个网站:http : //www.runningintheusa.com/Classic/View.aspx?RaceID=5622
我有代码(假设所有相关的库都已导入)
def get_detail(x):
dic = {}
driver = webdriver.PhantomJS(path)
driver.get(x)
driver.find_element_by_id('ctl00_ctl00_MainContent_hypPrimaryURL').click()
return driver.current_url
print get_detail('http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622')
Run Code Online (Sandbox Code Playgroud)
我运行了代码,它仅返回原始URL,即http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622
单击http://flagstaffbigs.org/dave-mckay-run.htm网站上的“比赛网站”链接后,如何找到网址?