如何在python selenium中将文本框数据转换为整数

如何在python selenium中将文本框数据转换为整数,python,selenium,selenium-webdriver,integer,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Integer,Selenium Chromedriver,我正在努力从文本框中获取文本,将其转换为整数,乘以1.2,然后重新插入文本框 我最初得到一个错误,说我无法将其转换为整数(即使字符串刚刚说'2000'),所以我尝试将其转换为浮点,然后转换为整数,但现在我得到'ValueError:无法将字符串转换为浮点' 你知道怎么回事吗?我将附加文本框的HTML和python HTML: 返回值中可能混合了一些unicode字符,您可以使用encode('ascii','ignore') 返回值中可能混合了一些unicode字符,您可以使用encode('a

我正在努力从文本框中获取文本,将其转换为整数,乘以1.2,然后重新插入文本框

我最初得到一个错误,说我无法将其转换为整数(即使字符串刚刚说'2000'),所以我尝试将其转换为浮点,然后转换为整数,但现在我得到'ValueError:无法将字符串转换为浮点'

你知道怎么回事吗?我将附加文本框的HTML和python

HTML:


返回值中可能混合了一些unicode字符,您可以使用
encode('ascii','ignore')


返回值中可能混合了一些unicode字符,您可以使用
encode('ascii','ignore')


根据您共享的HTML:

<input id="radius" ng-model="geoCtrl.lineRadius" type="text" placeholder="Desired radius from each point of the list" maxlength="100" name="targeting[geolocation][radius]" ng-class="{'val-ignore': geoCtrl.options !== 'geo'}" class="col-lg-12 attr-input ng-pristine ng-valid">
浏览器快照:


根据您共享的HTML:

<input id="radius" ng-model="geoCtrl.lineRadius" type="text" placeholder="Desired radius from each point of the list" maxlength="100" name="targeting[geolocation][radius]" ng-class="{'val-ignore': geoCtrl.options !== 'geo'}" class="col-lg-12 attr-input ng-pristine ng-valid">
浏览器快照:


因此,解决方案不是数据类型的问题,我的代码在加载文本框后立即提取其值,但“2000”仅在大约半秒钟后才填充。我找到的解决方案是在执行所讨论的python脚本之前添加一个时间延迟


谢谢你的帮助

因此,解决方案不是数据类型的问题,我的代码在加载文本框后立即提取其值,但“2000”仅在半秒钟左右后才填充。我找到的解决方案是在执行所讨论的python脚本之前添加一个时间延迟



谢谢你的帮助

first\u radius\u 20percent.get\u属性('value')
返回什么
'2000'
或者你只在网站上看到它吗?@Guy它返回u'2000'编辑:实际上,当我打印
第一个半径20%时,它只打印'2000'。
第一个半径20%返回什么。
第一个半径20%返回什么
'2000'
或者你只在网站上看到它吗?@Guy它返回u'2000'编辑:实际上,当我打印
第一个半径时,它只打印'2000'属性('value')
它只打印'2000'我尝试了这个,但现在我得到了错误值error:int()的无效文本,以10为基数:'@booooky错误消息中的值是什么<代码>…以10为基数:b'2000.0'
?没有任何值被赋予,只有'base 10:''-这是否表示没有值被提取?为什么?@booooky你说了
第一个半径20%。get\u属性('value')
返回一个值。您也可以尝试
value='''.join(如果c.isprintable(),则c代表值中的c)
其中
value
是从
get\u属性
返回的值。是的,它返回“u'2000'”(不带外部引号)。我尝试了这个方法,但现在得到了错误值error:invalid literal for int()以10为基数:'@booooky错误消息中的值是多少<代码>…以10为基数:b'2000.0'?没有任何值被赋予,只有'base 10:''-这是否表示没有值被提取?为什么?@booooky你说了
第一个半径20%。get\u属性('value')
返回一个值。您也可以尝试
value='''.join(如果c.isprintable(),则c代表值中的c)
其中
value
是从
get\u属性
返回的值。是的,它返回“u'2000'”(不带外部引号)。您读过问题了吗?我尝试将其转换为浮点,然后再转换为整数,但现在我得到了“ValueError:无法将字符串转换为浮点”@Booooky有机会评估这个答案吗?@DebanjanB现在就可以了,给我2秒钟:)@DebanjanB就这一个,我需要它先阅读文本框,因为值并不总是2000?请检查更新的答案并让我知道状态。你阅读了问题吗?我尝试将其转换为浮点,然后再转换为整数,但现在我得到了“ValueError:无法将字符串转换为浮点”@Booooky有机会评估这个答案吗?@DebanjanB现在就可以了,给我2秒钟:)@DebanjanB就这一个,我需要它先读取文本框,因为值并不总是2000?请签出更新的答案并让我知道状态。
current_radius = int(first_radius_20percent.get_attribute('value').encode('ascii', 'ignore'))
<input id="radius" ng-model="geoCtrl.lineRadius" type="text" placeholder="Desired radius from each point of the list" maxlength="100" name="targeting[geolocation][radius]" ng-class="{'val-ignore': geoCtrl.options !== 'geo'}" class="col-lg-12 attr-input ng-pristine ng-valid">
driver.get('https://www.google.com/')
first_radius_20percent = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, "q")))
# current_float_radius = float(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "radius"))).get_attribute('value'))
# or
# current_float_radius = float(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#radius"))).get_attribute('value'))
current_float_radius = float("2000")
new_radius = float(current_float_radius*1.2)
first_radius_20percent.send_keys(str(new_radius))