试图让 selenium 使用下拉菜单(select 元素)属性

Trying to get selenium to work property with drop down menu (select element)

我正在尝试从下拉菜单中将 selenium 设置为 select 特定值。

这是元素的图片。

这是元素的代码。

<select _ngcontent-c31="" class="input productEntry ng-valid ng-touched ng-dirty" formcontrolname="handlingUnit" tabindex="1022" style="">
    <option _ngcontent-c31="" value="0">N/A</option>
    <!---->
    <option _ngcontent-c31="" value="1" class="ng-star-inserted">Pallet</option>
    <option _ngcontent-c31="" value="2" class="ng-star-inserted">Skid</option>
    <option _ngcontent-c31="" value="3" class="ng-star-inserted">Loose</option>
    <option _ngcontent-c31="" value="4" class="ng-star-inserted">Other</option>
    <option _ngcontent-c31="" value="5" class="ng-star-inserted">Gaylord</option>
    <option _ngcontent-c31="" value="6" class="ng-star-inserted">Master Bundles</option>
    <option _ngcontent-c31="" value="7" class="ng-star-inserted">Carrier</option>
</select>

这是我试图让 selenium 自动运行的网站图片select。它用于类别 "Handling Unit"。我想要 select 托盘。 (第一个选项是 N/A,第二个选项是托盘,第三个选项是滑橇等)

我试过下面的代码。

from selenium.webdriver.support.ui import Select

select_element = Select(driver.find_element(By.XPATH, "//select[@class='input productEntry ng-valid ng-dirty ng-touched']"))
select_element.select_by_value('')

这一行导致我的其余代码出错。用 selenium 编写 select 元素的最佳方法是什么?

更新解决方案

select_element = Select(driver.find_element_by_xpath('/html[1]/body[1]/app-root[1]/div[1]/div[1]/app-record[1]/div[1]/div[2]/div[1]/app-record-quoting[1]/div[1]/app-record-product-list-panel[1]/form[1]/div[3]/div[1]/div[3]/div[1]/select[1]'))
select_element.select_by_value('1')

您必须使用这样的 Select 方法:

select_element = Select(driver.find_element_by_xpath(''))
select_element.select_by_value('')

您也可以使用 full Xpath 而不是 Xpath 来获取带有 selenium 的元素。 在你的图片中,你必须得到abs Xpath。它和我说的完整 Xpath 一样。

要获取带有硒的元素,您可以使用此方法:

driver.find_element_by_xpath('')

如果你想点击它,使用这个:

driver.find_element_by_xpath('').click()

如果要获取元素文本,请使用:

driver.find_element_by_xpath('').text

如果要在元素中写入文本,请使用:

driver.find_element_by_xpath('').send_keys('')

您可以同时使用 abs 和 rel Xpath,但 abs Xpath 的问题是 html 中的任何更改都可能导致 selenium 找不到元素或找到错误的元素。