【问题标题】:Finding location of dropdown option via Python Selenium通过 Python Selenium 查找下拉选项的位置
【发布时间】:2018-03-19 20:20:40
【问题描述】:

我在过去 2 天里进行了搜索,但没有找到可行的解决方案。我目前在 OSX 上使用 Python 3.6.4 和带有 chromedriver 的 v3.11.0 Selenium。

所以我希望实现的是找到与给定字符串匹配的 innerHTML 的下拉选项标记的坐标。

HTML如下:

<div class="select-wrapper">
  <select id="product-select" name="id" class="">
    <option value="1532273459205">Small</option>
    <option value="1532273491973">Medium</option>
    <option value="1532273524741">Large</option>
    <option value="1532273557509">X-Large</option>
 </select>
</div>

我的代码(我还在此代码之前为下拉菜单添加了 .click() 以确保下拉菜单实际可见):

size = input("What size do you want?")
for option in driver.find_elements_by_tag_name('option'):
                 if (option.get_attribute('innerHTML')) == size:
                     print(option.location)

但是,这会返回{'x':0, 'y':0} 的字典。

由于它没有返回错误,我猜这是因为该元素不可见。因此,我进行了更多研究并尝试将其添加到我上面的代码中。 WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH, '//option')))

但是,这仍然不起作用,仍然可以给出 0,0 作为坐标。我还是个新手,所以也许我在这里没有抓住一些东西。提前非常感谢,如果你们需要更多信息,请告诉我!谢谢!

【问题讨论】:

  • 为什么需要选项的坐标?
  • @ian 我希望创建某种脚本来点击与输入尺寸相对应的特定坐标!
  • 您打算如何使用坐标?即,你打算用它们做什么 Selenium 调用?您只是想在下拉列表中选择一个选项吗?或者您是否有某些特定原因要尝试执行原始鼠标点击?
  • 哦,我正计划将坐标提供给 pyautogui,以便鼠标点击另一个 chrome 会话(正常会话),所以我认为 select 方法不会起作用
  • 为什么需要另一个 Chrome 会话?为什么不也使用 Selenium 控制该会话?

标签: python-3.x selenium-chromedriver


【解决方案1】:

如果您只想选择一个选项,则无需收集元素坐标。 Selenium 提供Select() 就是为了这个目的:

from selenium.webdriver.support.select import Select

sizes = Select(driver.find_element_by_id("product-select"))
sizes.select_by_visible_text("Large")

【讨论】:

    猜你喜欢
    • 2019-05-28
    • 2018-11-04
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2021-05-24
    相关资源
    最近更新 更多