尝试使用python自动完成Web表单滑块

时间:2019-06-15 10:57:06

标签: python python-3.x selenium

我是Python的初学者,这是我第一次尝试自己想法的完整程序。到目前为止,尝试制作一个程序使用Selenium自动填充网站,现在我要指出的一点是,需要从滑动比例元素中选择年收入。如何使用Selenium或其他模块将元素滑动到预定位置(£值)?

例如,最好是在20,000到30,000英镑之间的随机值

enter image description here

我尝试了谷歌搜索,但没有运气。栈溢出的其他类似问题-答案也有评论说它们不起作用。我尝试了一些,却无法让他们自己工作。

下面是我当前正在使用的代码

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"}

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。对于任何了解CSS的人来说可能都是显而易见的,但是我仍然是一个新手。对我有用的代码非常简单。当然,更改css选择器以匹配您自己的选择器。我为我的解决方案添加了百分比,您的百分比可能会有所不同

{{1}}