我们正在尝试使用Selenium 2.0b3来验证我们最近从第三方那里获得的Java网站的行为。该站点通常使用AJAX将HTML替换内容放到页面上。

Internet Explorer,但是,任何形式输入后跟sendKeys的findElement只能工作一半时间。对于findElement,我们使用WebDriverWait,其中ExpectedCondition返回所需的元素,然后成功返回。但是,观察此元素上sendKeys的结果,我们通常看不到该字段。

填写HTML页面最初加载时最初加载的登录表单没有问题。这些问题似乎完全发生在通过异步请求刚刚加载了innerHTML更改的任何内容上。 (也许也不足为奇,Firefox也没有这些问题。)

在页面过渡后但执行findElement之前添加任意时间延迟似乎没有帮助。 (在看到异步请求完成设置innerHTML之后,我尝试等待了10秒钟,但仍然偶尔会出现问题。)

任何想法,这可能是什么,或者如何解决?

编辑:需要明确的是,这是在IE下使用Selenium 2 WebDriver进行的。

评论

这是特定于IE的吗?

是Selenium 1还是使用Webdriver的Selenium?

听起来与我最近使用watir-webdriver处理的问题类似(如果您使用的是webdriver,则类似)。就我而言,我能够通过在使用sendKeys之前在元素上单击(以选择它)来解决/变通方法。

它只是IE,在Selenium 2 WebDriver下。更新了文字以反映这一点。

@sean_robbins您的建议似乎可行。如果您可以将其推广为答案,我会将其标记为正确的答案。

#1 楼

这听起来与我最近使用watir-webdriver处理的问题类似(如果您使用的是webdriver,则类似)。就我而言,我能够通过使用sendKeys在元素上单击(以选择它)来解决/解决方法。因此,我建议您可以在使用sendKeys之前尝试向元素发送一次点击。 :)

#2 楼

driver.ExecuteScript(string.Format("document.getElementById('cred-password-inputtext').value='{0}';",password));


此解决方案解决了我的问题。

评论


这是在python / selenium / phantomjs中唯一对我有用的东西:driver.execute_script(“ document.getElementById('email')。value ='test';”);

– wbt11a
16-6-1,14:24



#3 楼

您可以尝试使用以下命令:

send_keys(driver.find_element_by_css_selector('#select_something'), value)


此外,您需要将send_keys重新定义为:

def send_keys(元素,键):
键入密钥:
element.send_keys(key)

一键发送密钥更可靠,且错误更少。语法在python中。