首页 > 解决方案 > Selenium dropmenu 是 div

问题描述

我正在使用 python+selenium 模拟下拉菜单中的单击选项

这是下拉菜单图片 在此处输入图片描述

这是 3 个不同选项的页面源

<a onclick="DigitSelected('TabMasterContent','N','sub_3','3587822','C')"><table class="chRT"><tbody><tr><td class="chC1p">C</td><td class="chC2p">Hastelloy C-22</td><td class="chC3p">526.00</td><td class="chC4p">73.64</td><td class="chC5p">0</td></tr></tbody></table></a>
<a onclick="DigitSelected('TabMasterContent','N','sub_3','3587823','D')"><table class="chRT"><tbody><tr><td class="chSC1p">D</td><td class="chSC2p">Hastelloy C-4 (2.4610)</td><td class="chSC3p">0.00</td><td class="chSC4p">0.00</td><td class="chSC5p">0</td></tr></tbody></table></a>
<a onclick="DigitSelected('TabMasterContent','N','sub_3','3587824','S')"><table class="chRT"><tbody><tr><td class="chC1p">S</td><td class="chC2p">Stainless steel 316</td><td class="chC3p">0.00</td><td class="chC4p">0.00</td><td class="chC5p">0</td></tr></tbody></table></a>

我想做的只是模拟点击不同的选项。我正在使用 selenium IDE 得到的代码应该是这样的

driver.find_element(By.CSS_SELECTOR, ".chRow:nth-child(2) .chC2p").click()

但我只是想使用代码从选项的第一个字母“C”、“D”、“S”中选择不同的选项,你有什么好主意吗?比如这个,我知道这是行不通的

driver.find_element_by_partial_link_text("S").click

标签: pythonseleniumelement

解决方案


归纳WebDriverWaitelement_to_be_clickable() 并遵循XPath

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[.//td[text()='C']]"))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[.//td[text()='D']]"))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[.//td[text()='S']]"))).click()

您需要导入以下库。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

推荐阅读