我想用Selenium Webdriver填充网站上的输入字段。输入字段如下所示:
$product_obj = get_page_by_path( $slug, OBJECT, 'product' );
因此,我以前在填写输入字段时从未遇到问题。但这会自动格式化输入,因此,如果您输入24424,它会自动使其中的24.424变成
。如果我现在使用Webdriver输入值,则可以输入它(例如4200),并且输入字段使它变成4.200。但是当我提交属于输入字段的表单时,它将值更改为0。 疯狂的事情是,如果我输入的值小于1000,并且输入字段不需要格式化,那么我可以提交正确的数字。有人知道为什么吗?
我已经尝试过的方法:
但是两者都没有帮助。这是我的代码-
<input type="text" pattern="[0-9,.]*" class="checkThousandSeparator hideNumberSpin" name="metal" tabindex="1" id="metal" value="0" onblur="updateVariables();" onkeyup="checkRessourceByType('metal'); updateVariables();" onkeypress="return submitOnEnter(event);">
没有错误或任何东西
编辑:我忘了说:如果我使用Selenium Webdriver输入值,表单只会提交正确的值。如果我输入
手动设置值,即使该值> 1000,表单也始终会提交正确的值。
Edit2解决方案:好的。不需要使用sendKeys()-Method,而是需要通过JavaScriptExecuter设置值。
//doesn't work, form will submit a "0"
int met = 4200;
driver.findElement(By.id("metal")).sendKeys(Integer.toString(met));
//works, form submits the right value
int met = 200;
driver.findElement(By.id("metal")).sendKeys(Integer.toString(met));
答案 0 :(得分:0)
您可以使用硒删除pattern属性和class属性。然后,您可以尝试输入所需的值。
尝试一下
答案 1 :(得分:0)
您描述的行为对我来说似乎是个错误。假设您手动键入时没有发生这种情况,则可能是由于Selenium很快“按下”了按键造成的。
每次按键后稍等片刻可能会有所帮助:
String[] digits = "200".split("");
for (String digit : digits) {
inputElement.sendKeys(digit);
Thread.sleep(250);
}
在不知道这些处理程序的实现的情况下,不可能缩小原因。
答案 2 :(得分:0)
您可以尝试一下,
df['Protection'] = np.where((df['Email']=='trump@gmail.net'),'off','on')
还有这个
int met = 4200;
driver.findElement(By.id("metal")).sendKeys("" + met);
或
String met = "4200";
driver.findElement(By.id("metal")).sendKeys(String.valueOf(met));
,并且还使用driver.findElement(By.id("metal")).sendKeys(Keys.NUMPAD4, Keys.NUMPAD2, Keys.NUMPAD0, Keys.NUMPAD0);
JavaScript
尝试一下。