from selenium.webdriver.support.select import Select
,省略
driver.find_element(by=By.XPATH, value='//[@id="tiCartCalculate_Checkout"]').click()
time.sleep(7)
select = driver.find_element(by=By.XPATH, value='//[@id="select-country-list-id"]') #选择国家
Select(select).select_by_value("CN")
time.sleep(2)
driver.find_element(by=By.XPATH, value='//*[@id="shipping_companyUrl"]').send_keys("http://timerecorder.ccaeo.com/%22) #向必须填写的文本框发送公司网址
没有任何反应。其实第一次写的是按索引,by_ index(27), 当时出来的是 chad ,比中国china的29靠前面两个位置的,正 常选择了,就下班走了。结果第二天开始死活选择不了,它也不报错,运行到下面的语句
填写网址报错 Message: element not interactable 上面的国家选择不了,也没心思管下面的bug
请予以解答,谢谢
时灵时不灵,感觉可能是有时候网页没加载完啊,driver.get之后加了sleep操作了吗?
加入等待时间 self.driver.implicitly_wait(5)
有的select
是通过js 加载的,你可以通过模拟鼠标点击来实现,或者通过js来操作
比如:先点击后再选择选项
actions = ActionChains(self.driver)
actions.move_to_element(self.driver.find_element(By.XPATH, "//*[@id="csdn-toolbar"]/div/div/div[3]/div/div[1]")).perform() # 鼠标悬停到csdn用户头像
WebDriverWait(self.driver, 10, 0.5).until(ec.presence_of_element_located((By.XPATH, "//li[contains(.,'退出登录')]"))) # 隐式等待 判断元素是否被加到了 dom 树里
self.driver.find_element(By.XPATH, "//li[contains(.,'退出登录')]").click()
疯了吧,xpath定位不行,改成按 ID 好像可以了,通过了一次
但这个driver.find_element(by=By.XPATH, value='//*[@id="shipping_companyUrl"]').send_keys("http://timerecorder.ccaeo.com/%22) #向必须填写的文本框发送公司网址 改按ID shipping_companyUrl依然报错