Stackoverflow用户您好!
在许多网站上,有一些可滚动的div容器。例如在facebook上,如果你点击任何活动,想知道谁参加了这个活动。你点击按钮,它会打开一个列表,你可以看到所有的人。另一个例子,如果你访问任何instagram个人资料并点击“关注者”。然后它会再次打开一个列表,你可以看到所有的关注者。这些列表可能很长,一个技巧是向下滚动所有列表,按下键盘上的“空格键”。
我的问题:
1.) 如何给硒下达命令,按“空格”键 x 秒?
或
2.)如何将这些列表(不是浏览器站点[只有div容器])自动滚动到底?
我试过了:
driver.FindElement(By.XPath("//div[contains(.,'followers')]")).SendKeys(Keys.Space);
我使用:
硒,C#,铬
你有 LocationOnScreenOnceScrolledIntoView in Selenium。您可以使用它将所需的 div 滚动到视图中:
public static IWebElement FindElementOnPageScrolling(this IWebDriver driver, By element)
{
RemoteWebElement remoteElement = (RemoteWebElement)driver.FindElement(element);
var foo = remoteElement.LocationOnScreenOnceScrolledIntoView;
return remoteElement;
}
这通常在chrome和firefox中运行良好,但在IE和Edge中运行不好,至少在我的经验中如此。
你也可以试着发送密钥。向下或向下键。如果您没有尝试过,请单击“结束”向下滚动。
这是相当棘手的…我有一个部分的答案,充其量。
我能想到的最好的办法是循环来继续发送空格键,因为 keyDown 命令仅适用于某些键(从文档中可以看出)。由于链接的数量会不断增长,直到您到达列表的末尾,因此这是确定您是否已经触底的一种方法,而不是依赖于实际的Y位置。
bool atBottom = false;
while (!atBottom)
{
var linkNumber = driver.FindElementsByClassName("_6e4x5").Count;
driver.FindElementByClassName("_6e4x5").SendKeys(Keys.Space);
var newLinkNumber = driver.FindElementsByClassName("_6e4x5").Count;
atBottom = newLinkNumber.Equals(linkNumber);
}
但是我无论如何也不能让web驱动程序专注于元素来发送密钥。我尝试了多个类名和xpath...就好像IG不想让这个自动化一样。
您可能会发现这个堆栈问题很有帮助,因为直接调用JavaScript可能是一种很好的解决方法。
KeyDown():此方法模拟需要按下特定键盘键时的键盘操作。
keyUp():使用KeyDown()方法按下的键盘键不会自动释放,因此KeyUp()方法用于显式释放该键。
Actions action = new Actions(driver);
action.KeyDown(Keys.Space);
System.Threading.Thread.Sleep(1000); // trying to press space for X= 1000 ms
action.KeyUp(Keys.Space);
action.Build().Perform();
问题内容: 我想知道Selenium C#上是否存在任何Assert类,就像我们在编码UI测试中一样。否则我将使用Microsoft.VisualStudio.TestTools.UnitTesting.Assert类在selenium中执行断言。谢谢 问题答案: 是的,您将在单元测试框架中使用该类 该库对测试框架功能类型(包括)不负责。您可以使用支持多种不同框架的工具,其中包括如果您出于任何原因
问题内容: 我已经在c#中使用selenium编写了一个nUnit测试。 一切顺利,直到我必须确认JS确认框。 这是我正在使用的代码: 确认框出现在提交按钮之后。确认出现,然后立即消失,但不提交表单。无论上面的accept()行如何,其行为都是相同的。 我正在使用Firefox v15.0.1和seleniumv2.24 我试图在提交点击和确认接受之间放置一个Thread.Sleep。 我读过的所
问题内容: 在使用FirefoxDriver编写测试时, 我发现由于执行javascript和CSS,页面的加载真的很慢。反正有禁用此功能吗?甚至可以将Noscript插件安装到配置文件? 另外,sendKeys()实际上输入了文本。但是,对于长文本来说,这相当慢,无论如何要立即在输入框中输入所有字符串? 问题答案: 您可以在中禁用javaScript : 我不认为有一种禁用CSS的方法,这不是您
问题内容: 我正在使用C#Selenium-WebDriver。发送密钥后,我要等待几秒钟。我执行以下代码以等待2秒钟。 我这样打电话: 它工作正常。哪一个是更好的方法? 问题答案: 我会不惜一切代价避免使用这样的方法,因为它会减慢测试速度,但是我遇到了我没有其他选择的情况。 总是最好以某种方式观察DOM,例如:
问题内容: 我已导入以下内容,但在使用时仍然出现错误 注意:我在Eclipse中使用Selenium WebDriver。 示例代码如下。 我收到一条错误消息,指出 指向线 你们其中一个能让我知道这里有什么不对吗? 问题答案: 您可以尝试使用此方法,这里已解决了类似的问题#sendKeys问题 或简单地
问题内容: 我要测试的字符串很长,而且时间太长。当我尝试设置程序的值时崩溃。我知道Selenium 是测试实际用户输入的最佳方法,但是对于我的应用程序来说,这会花费太多时间。因此,我试图避免这种情况。 有没有一种立即设置值的方法? 请看以下快速示例: 问题答案: 尝试使用方法设置元素的值:
问题内容: 我面临以下问题。我无法在其中有文本编辑器的iframe中键入文本:这是html: 到目前为止,这是我所做的,但是测试成功通过,并且文本编辑器中未写入任何文本。可能的解决方案是使用Javascript执行程序,但我对此并不熟悉。 提前致谢! 问题答案: 有多种实现方法。这是您可能想要看看的文章。 使用Selenium WebDriver测试所见即所得的编辑器 直接发送密钥 这种方法是您尝
问题内容: 我有三节课。一种用于从网页中获取所有元素,一种用于对这些元素执行操作,另一种用于测试脚本。从测试脚本调用函数时,出现空指针异常。我发现这是因为我使用了@FindBy批注,但我不知道如何解决此问题。 元素类: 动作类: 测试脚本: 当我将WebDriver对象从测试脚本传递到元素类时,也不例外。由于没有WebDriver实例化,当我使用通过FindBy注释初始化的元素时,会发生问题。我该