相关疑难解决方法(0)

等到页面加载Selenium WebDriver for Python

我想刮掉由无限滚动实现的页面的所有数据.以下python代码有效.

for i in range(100):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(5)
Run Code Online (Sandbox Code Playgroud)

这意味着每次向下滚动到底部时,我都需要等待5秒钟,这通常足以让页面完成加载新生成的内容.但是,这可能不是时间效率.页面可以在5秒内完成加载新内容.每次向下滚动时,如何检测页面是否已完成加载新内容?如果我能检测到这一点,一旦我知道页面加载完毕,我可以再次向下滚动以查看更多内容.这更节省时间.

python selenium execute-script

142
推荐指数
13
解决办法
27万
查看次数

Selenium等到文档准备好了

任何人都可以让我如何让硒等到页面完全加载的时候?我想要一些通用的东西,我知道我可以配置WebDriverWait并调用类似'find'的东西让它等待,但我不会那么远.我只需要测试页面加载成功并转到下一页进行测试.

我在.net中找到了一些东西但是无法在java中使用它...

IWait<IWebDriver> wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(30.00));
wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));
Run Code Online (Sandbox Code Playgroud)

有人想过吗?

selenium load document wait

124
推荐指数
6
解决办法
34万
查看次数

Selenium - 如何等待页面完全加载

我正在尝试使用Java和Selenium WebDriver自动化一些测试用例.我有以下场景:

  • 有一个名为"产品"的页面.当我点击"产品"页面中的"查看详细信息"链接时,会出现一个包含该项目详细信息的弹出窗口(模式对话框).
  • 当我点击弹出窗口中的"关闭"按钮时,弹出窗口关闭,页面自动刷新(页面刚刚重新加载,内容保持不变).
  • 关闭弹出窗口后,我需要点击同一页面中的"添加项目"按钮.但是当WebDriver试图找到"添加项目"按钮时,如果互联网速度太快,WebDriver可以找到并单击该元素.

  • 但是如果互联网很慢,WebDriver会在页面刷新之前找到按钮,但只要WebDriver单击该按钮,页面就会刷新并StaleElementReferenceException发生.

  • 即使使用了不同的等待,所有等待条件也变为真(因为重新加载之前和之后页面中的内容相同),甚至在页面重新加载和StaleElementReferenceException 发生之前.

如果Thread.sleep(3000);在单击"添加项目"按钮之前使用测试用例,则工作正常.这个问题还有其他解决方法吗?

java selenium-webdriver

62
推荐指数
3
解决办法
20万
查看次数

使用Selenium WebDriver获取当前页面的URL

我正在尝试获取当前打开页面的URL.我正在使用Selenium WebDriver和Java.

我通过以下方式访问当前网址:

WebDriver driver = new WebDriver();
String url = driver.getCurrentUrl();
Run Code Online (Sandbox Code Playgroud)

但是,URL似乎并未实际反映我当前的位置.

我目前的测试案例包括访问NYT网站,然后点击"技术"链接.但是,无论地址栏中显示的URL如何,url似乎始终如此http://www.nytimes.com/.

我如何实际访问地址栏中URL的值,以便我可以告诉我实际上在哪个页面上?

java selenium webdriver

49
推荐指数
1
解决办法
14万
查看次数

如何在Web驱动程序中检查页面是否完全加载?

我正在编写一些Java Webdriver代码来自动化我的应用程序.如何正确检查页面是否已加载?该应用程序也有一些Ajax调用.

我已经声明了WebDriver的隐式等待.

jquery selenium webdriver wait

21
推荐指数
2
解决办法
7万
查看次数

让Selenium暂停X秒

我想要完成的是浏览页面,等待加载某些内容然后获取并保存屏幕截图.

我已经拥有的代码是

WebDriver driver = new FirefoxDriver();


driver.get("http://www.site.com");


driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

try {

    File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(scrFile, new File("/home/Desktop/image.png"));

} catch (Exception e) { 

       e.printStackTrace(); 
}

driver.close();
Run Code Online (Sandbox Code Playgroud)

我需要等待的原因,即使页面被加载是因为它将被加载但在网站上我想要在几秒钟后拍摄负载的内容.由于某种原因页面没有等待,是否有另一种方法可以让驱动程序/页面等待X秒?

java selenium selenium-webdriver

17
推荐指数
3
解决办法
5万
查看次数

如何让webDriver等待页面加载(C#Selenium项目)

我在C#开始了一个Selenium项目.尝试等待页面完成加载,然后才进行下一步操作.

我的代码看起来像这样:

 loginPage.GoToLoginPage();
        loginPage.LoginAs(TestCase.Username, TestCase.Password);
        loginPage.SelectRole(TestCase.Orgunit);
        loginPage.AcceptRole();
Run Code Online (Sandbox Code Playgroud)

在loginPage.SelectRole(TestCase.Orgunit)中:

 RoleHierachyLabel = CommonsBasePage.Driver.FindElement(By.XPath("//span[contains(text(), " + role + ")]"));
 RoleHierachyLabel.Click();
 RoleLoginButton.Click();
Run Code Online (Sandbox Code Playgroud)

我搜索元素RoleHierachyLabel.我一直在尝试使用多种方式等待页面加载或搜索元素属性允许一些超时:

1. _browserInstance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
Run Code Online (Sandbox Code Playgroud)
2. public static bool WaitUntilElementIsPresent(RemoteWebDriver driver, By by, int timeout = 5)
    {
        for (var i = 0; i < timeout; i++)
        {
            if (driver.ElementExists(by)) return true;
        }
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

你会如何解决这个障碍?

c# pageload ui-automation selenium-firefoxdriver selenium-webdriver

16
推荐指数
2
解决办法
5万
查看次数

使用python访问selenium web元素

我确信这已经在某个地方得到了回答,因为这是一个非常基本的问题 - 但是,对于我的生活,我不能在网上找到答案.我觉得自己像一个完全白痴,但我必须这样问,这里是:

我正在编写一个python代码,它将生成一个域上所有页面地址的列表.这是使用selenium 2完成的 - 当我尝试访问由selenium生成的所有链接的列表时,我的问题出现了.

这是我到目前为止所拥有的:

from selenium import webdriver
import time

HovedDomene = 'http://www.example.com'
Listlinker = []
Domenesider = []
Domenesider.append(HovedDomene)

driver = webdriver.Firefox()

for side in Domenesider:        

        driver.get(side)
        time.sleep(10)
        Listlinker = driver.find_elements_by_xpath("//a")

        for link in Listlinker: 

            if link in Domenesider:
              pass
            elif str(HovedDomene) in str(link):
              Domenesider.append(side)

print(Domenesider)
driver.close()
Run Code Online (Sandbox Code Playgroud)

Listlinker变量不包含在网页上找到的链接-而不是列表中包含,(我猜在这里)称为WebElements硒的特定对象.我不能,但是,发现任何WebElement属性,这将使我的链接-因为事实上我无法找到WebElement的任何实例在python属性被访问(至少不会以这样的方式我可以重现)

我非常感谢你们能给我的任何帮助

真诚的新人

python selenium

13
推荐指数
1
解决办法
2万
查看次数

Selenium WebDriver:如何等待iFrames完全加载?

我正在测试一个带有iFrame的页面,其内容是由JavaScript动态生成的.我必须等待完全加载iFrame以确保所有元素都存在.我尝试了下面的代码,它没有用.

WebDriver frame = wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("frmMain"));
Run Code Online (Sandbox Code Playgroud)

我还试图等待iFrame中的某些元素出现.它没有用,也没用.

任何帮助将不胜感激,谢谢!

java iframe selenium selenium-webdriver

13
推荐指数
1
解决办法
2万
查看次数

driver.wait()抛出IllegalMonitorStateException

wait(...)的所有变体都从以下代码中抛出以下异常.我究竟做错了什么?

java.lang.IllegalMonitorStateException
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at LoginPage.main(LoginPage.java:29)

try
        {
            driver.get("http://domain:port/coco/webapp/login/login.faces");

            driver.findElement(By.id("clientCode")).sendKeys("coco");
            driver.findElement(By.id("systemCode")).sendKeys("consumer");
            driver.findElement(By.id("userId")).sendKeys("ffadmin");
            driver.findElement(By.id("password")).sendKeys("password");

            driver.findElement(By.className("af_commandButton")).click();
            driver.wait();
            Assert.assertTrue(driver.getPageSource().contains("Administration"));

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

java testing selenium webdriver selenium-webdriver

8
推荐指数
2
解决办法
3万
查看次数