Python 3.9和Selenium 4.0.0
HTML代码:
<select id="selectedDisplayColumns" name="selectedDisplayColumns" multiple="multiple" size="8">
<option value="first_name">First Name</option>
<option value="last_name">Last Name</option>
<option value="phone">Phone</option>
<option value="email">Email</option>
<option value="city">City</option>
<option value="state">State</option>
</select>
每当我运行报告时,这些选项可能会混淆,因此first_name
可能是第四个选项,而不是第一个选项,但有时它可能是第一个选项。
所以我试着让硒重新排序到它总是首先有first name
的位置(有一个重新排序按钮,带有//*[@id="configureDisplayColumnsContainer"]/fieldset/div[2]/p/input[4]
和//*[@id="configureDisplayColumnsContainer"]/fieldset/div[2]/p/input[5]
的xpath,分别是move up
和move down
。我必须首先选择该选项,然后单击上移或下移来更改顺序。
这是我当前的代码:
from selenium.webdriver.support.ui import Select
# xpath for the option menu
menu = Select(driver.find_element(By.Xpath, '//*[@id="selectedDisplayColumns"]')
selector = Select(menu)
for index in range(1, len(menu)-1):
print(menu[index])
我建议使用.getAttribute功能来提取属性的名称。您需要对其进行调整,以获得您正在抓取的页面的确切布局,但我提供了一个演示此功能的快速示例:
element = driver.find_element_by_xpath("[@id='configureDisplayColumnsContainer']/fieldset/div[2]/p/input[0]")
attribute = element.get_attribute("value")
print(attribute)
这应该打印出特定xpath下的第一个属性;first_name";。从那时起,这只是一个建立一个最适合你刮刮需求的组织体系的问题。