我是Python的初学者,这是我第一次尝试自己想法的完整程序。到目前为止,尝试制作一个程序使用Selenium自动填充网站,现在我要指出的一点是,需要从滑动比例元素中选择年收入。如何使用Selenium或其他模块将元素滑动到预定位置(£值)?
例如,最好是在20,000到30,000英镑之间的随机值
我尝试了谷歌搜索,但没有运气。栈溢出的其他类似问题-答案也有评论说它们不起作用。我尝试了一些,却无法让他们自己工作。
下面是我当前正在使用的代码
percent = 50
browser.switch_to_frame(0)
browser.switch_to_active_element()
slidebar = browser.find_element_by_xpath('//*[@id="annualRangeWrap"]/a')
height = slidebar.size['50']
width = slidebar.size['342']
move = ActionChains(driver);
slider = browser.find_element_by_xpath('//*[@id="annualRangeWrap"]/a')
if width > height:
move.click_and_hold(slider).move_by_offset(percent * width / 100, 0).release().perform()
else:
move.click_and_hold(slider).move_by_offset(percent * height / 100, 0).release().perform()
browser.switch_to_default_content()
这是来自检查元素的代码
<div class="question" id="annualRangeWrap" style="display: block;"><div class="rangeLabel">Annual income</div>
<div class="rangeWrap"><div class="rangeLow">£0</div><div class="rangeNum"><span>Slide to select</span></div>
<div class="rangeHigh">£50,001+</div>
<div class="affRangeSlider ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all">
<div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div>
<a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div></div></div>
''<div class="rangeLabel">Annual income</div><div class="rangeWrap"><div class="rangeLow">£0</div><div class="rangeNum">
<span>Slide to select</span></div><div class="rangeHigh">£50,001+</div>
<div class="affRangeSlider ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all">
<div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div>
<a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div></div>'
我尝试使用ID,类,Xpath。我不知道我要去哪里哪里
这通常是我在追溯中得到的。我尝试过在组合中使用其他元素,但是它总是“找不到'xxxxx'”
File "C:\Users\John\Desktop\New folder (2)\VeryAutoForm.py", line 138, in <module>
slidebar = browser.find_element_by_xpath('//*[@id="annualRangeWrap"]/a')
File "C:\Program Files\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Program Files\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "C:\Program Files\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Program Files\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="annualRangeWrap"]/a"}
答案 0 :(得分:0)
好的,我找到了解决方案。对于任何了解CSS的人来说可能都是显而易见的,但是我仍然是一个新手。对我有用的代码非常简单。当然,更改css选择器以匹配您自己的选择器。我为我的解决方案添加了百分比,您的百分比可能会有所不同
{{1}}