python - 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
解决方案
归纳WebDriverWait
和element_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