selenium常见问题(网页缩放、滑动,元素获取不到......)

1. Selenium无法点击元素,报错:ElementClickInterceptedException:element click intercepted

在这里插入图片描述
解决办法:

  • 方法一:
    element = driver.find_element_by_xpath("表达式") driver.execute_script("arguments[0].click();", element)
  • 方法二:
    element = driver.find_element_by_xpath('表达式') webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()

2. selenium操作下拉滚动条方法

  • 方法一 使用js脚本直接操作:
    js = "var q=document.getElementById('id').scrollTop=10000" driver.execute_script(js)
  • 方法二 使用JavaScript脚本将滚动条拖动到指定地方:
    target = driver.find_element_by_id("id_keypair") # 需要将滚动条拖动至的指定的元素对象定位 driver.execute_script("arguments[0].scrollIntoView();", target) # 将滚动条拖动到元素可见的地方
  • 方法三 根据页面显示进行变通(在本实例中的页面中,密码是输入框,正常手工操作时,可以通过tab键可以从用户框切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示。):
    from selenium.webdriver.common.keys import Keys # 导入Keys类 driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB) # 定位元素并操作输入
  • 方法四 send_keys(Keys.END) 模拟向页面发送空格键:
    注意: 发送空格键的元素应该是整个页面对象,比如说定位到页面body后进行操作
#coding=utf-8
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.common.action_chains import ActionChains
    browser=webdriver.Chrome("G:/dj/chromedriver.exe")
    wait=WebDriverWait(browser,10)
    browser.set_window_size(1400,900)
    import time
    def search():
        try:
            browser.get("https://www.taobao.com")
            total=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"body > div:nth-child(29)")))
            for i in range(5):
                 browser.find_element_by_tag_name('body').send_keys(Keys.Space)
                 time.sleep(1)
        except TimeoutException:
            search()
    search()
  • 方法五 使用鼠标操作:
#coding=utf-8
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.common.action_chains import ActionChains
    browser=webdriver.Chrome("G:/dj/chromedriver.exe")
    wait=WebDriverWait(browser,10)
    browser.set_window_size(1400,900)
    import time
    def search():
        try:
            browser.get("https://www.taobao.com")
            total=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"body > div:nth-child(29)")))
            target = browser.find_element_by_css_selector('body > div:nth-child(29)')
            actions = ActionChains(browser)
            actions.move_to_element(target)
            actions.perform()
        except TimeoutException:
            search()
    search()

3. 等待元素加载

#创建WebDriverWait对象
    wait = WebDriverWait(browser, 10)
	wait.until(expected_conditions.visibility_of_element_located((By.XPATH,  'elemental')))

4. 缩放页面

script = "document.body.style.zoom='75%'"
driver.execute_script(script)
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以通过以下代码在 Selenium 中找到 `class` 元素为 `anticon anticon-right` 的父元素: ```python from selenium import webdriver # 启动 Chrome 浏览器 driver = webdriver.Chrome() # 访问网页 driver.get("https://www.example.com") # 找到 class 为 anticon anticon-right 的元素 element = driver.find_element_by_class_name("anticon-right") # 获取元素 parent_element = element.find_element_by_xpath("..") ``` 在这里,我们首先使用 `find_element_by_class_name()` 方法找到 `class` 元素为 `anticon anticon-right` 的元素。然后,我们使用 `find_element_by_xpath("..")` 方法获取其父元素。 ### 回答2: 在Selenium中找到class元素为"anticon.anticon-right"的父辈,可以使用XPath表达式来实现。 XPath是一种用于在XML文档中进行导航和查找的语言,也适用于HTML文档。使用XPath可以通过元素的属性、层级关系等来定位元素。 下面是一个使用XPath表达式的示例代码: ```python from selenium import webdriver # 启动浏览器 driver = webdriver.Chrome() # 打开网页 driver.get("https://example.com") # 使用XPath定位父辈元素 parent_element = driver.find_element_by_xpath("//span[@class='anticon anticon-right']/..") # 输出父辈元素的文本内容 print(parent_element.text) # 关闭浏览器 driver.quit() ``` 在上述例子中,使用了XPath表达式"//span[@class='anticon anticon-right']/.."来定位"anticon.anticon-right"类的元素的父辈元素。其中".."表示选取当前节点的父节点。 根据实际情况,可以将该XPath表达式进行修改,以便更准确地定位到目标元素的父辈元素。 需要注意的是,为了运行该示例代码,需要事先安装Selenium库,并将Google Chrome浏览器与Selenium进行关联。 以上就是使用Selenium中的XPath表达式来找到class元素为"anticon.anticon-right"的父辈元素的方法。 ### 回答3: 在Selenium中,要找到class元素为"anticon.anticon-right"的父辈,可以使用XPath语法来实现。 XPath是一种用于遍历和定位XML文档中节点的语言。它可以通过路径表达式指定元素的位置。在这种情况下,我们可以使用XPath的父节点(..)轴,结合class属性的条件进行定位。 下面是一个示例代码,展示了如何使用XPath来找到class元素为"anticon.anticon-right"的父辈: ```python from selenium import webdriver # 创建一个WebDriver实例 driver = webdriver.Chrome() # 打开网页 driver.get("https://example.com") # 使用XPath语法查找父辈元素 parent_element = driver.find_element_by_xpath("//div[@class='anticon anticon-right']/..") # 输出父辈元素的标签名 print(parent_element.tag_name) # 关闭浏览器 driver.quit() ``` 在上述示例中,我们使用`find_element_by_xpath`方法配合XPath表达式`//div[@class='anticon anticon-right']/..`来找到class元素为"anticon.anticon-right"的父辈元素。然后,我们可以对父辈元素进行任何操作,比如查看其标签名、属性等。 注意,上述示例是基于Python语言的Selenium库来实现的,如果你使用的是其他语言,可以参考相应语言的Selenium文档和API进行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值